概括
我认为在Xamarin.iOS中生成TableView的方法不是日语组织的,因此我对其进行了总结。 Xamarin.iOS使用UITableViewController的子类和UITableSource的子类。由于C#不能继承一个以上的类,因此它不能像快速编写时那样从Delegate和DataSource继承。
故事板
1.设置TableView和TableViewCell
使用iOS设计器或Interface Builder在视图控制器中设置TableView和TableViewCell。
2.在iOS Designer中,设置TableView Identity的名称
在iOS Designer中,单击创建的TableView。在右下方属性中将任何值设置为"身份名称"。在UITableViewController的子类中使用。据我所知,Interface Builder无法设置TableView标识的名称,但是如果您输入有误,请发表评论。
3.在iOS Designer或Interface Builder
中设置TableViewCell标识符
在iOS设计器或Interface Builder中,单击创建的TableViewCell。 iOS
在Designer中,将右下角的"表视图单元格的标识符"设置为任何值。在UITableViewSource的子类中使用。
Interface Builder可以通过使用XCode搜索找到,因此我将省略它。
码
1.在ViewDidLoad中,将TableView的Source属性设置为继承UITableViewSource
的子类的实例。
1 2 3 4 5 6 7 | public override void ViewDidLoad() { base.ViewDidLoad(); // 配列でもListでもどちらでも var list = new List<string>(); TableView.Source = new tableViewSource(list); } |
2.实现一个继承自UITableViewSource类
的子类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class tableViewSource : UITableViewSource { readonly List<Item> list = new List<string>(); public SharedTableViewSource(List<string> _list) { list = _list; } public override nint RowsInSection(UITableView tableview, nint section) { return list.Count; } public override UITableViewCell GetCell(UITableView tableView, Foundation.NSIndexPath indexPath) { var cell = tableView.DequeueReusableCell("任意の名前"); var item = list[indexPath.Row]; cell.TextLabel.Text = item.name; // 任意のプロパティ return cell; } } |
您可以执行此操作。
之所以要获取由UITableViewController绘制的数据并传递给Source的原因,是为了获取事件并在绘制的数据发生更改时重新加载(ReloadData)。在此示例中,可以使用TableView.ReloadData()执行ReloadData。