Uitableview 传递的Class.TableViewDataSource类型的对象不是从NSObject派生的?
当我执行以下操作时,我在尝试设置UITableView的数据源时,出现“传递的对象类型为Class.TableViewDataSource不派生自NSObject”错误Uitableview 传递的Class.TableViewDataSource类型的对象不是从NSObject派生的?,uitableview,xamarin,xamarin.ios,Uitableview,Xamarin,Xamarin.ios,当我执行以下操作时,我在尝试设置UITableView的数据源时,出现“传递的对象类型为Class.TableViewDataSource不派生自NSObject”错误 viewdidload { tableView.DataSource = new TableViewDataSource(al); } class TableViewDataSource : IUITableViewDataSource { publ
viewdidload {
tableView.DataSource = new TableViewDataSource(al);
}
class TableViewDataSource : IUITableViewDataSource
{
public ArrayList listOfSellers
{
get;
set;
}
public TableViewDataSource(ArrayList al) {
listOfSellers = al;
}
public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var cell = (SellerCell)tableView.DequeueReusableCell("cell", indexPath);
cell.seller.Text = (string)listOfSellers[indexPath.Row];
return cell;
}
public nint RowsInSection(UITableView tableView, nint section)
{
return listOfSellers.Count;
}
}
知道为什么吗。如果类是从接口派生的,则必须实现在其父接口中定义的所有方法 这里还需要实现
INativeObject
,IDisposable
中的方法
public class TableViewDataSource : IUITableViewDataSource
{
public IntPtr Handle { get; }
public void Dispose()
{
}
}
但是,通常我们使用UITableViewDataSource
。它派生自IUITableViewDataSource
,我们只需要重写其中的方法
public class TableViewDataSource : UITableViewDataSource
{
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var cell = (SellerCell)tableView.DequeueReusableCell("cell", indexPath);
cell.seller.Text = (string)listOfSellers[indexPath.Row];
return cell;
}
public override nint RowsInSection(UITableView tableView, nint section)
{
return listOfSellers.Count;
}
}