根据this Xamarin docs page,我正在Xamarin iOS应用中构建表格视图:
UITableViewSource
课程,覆盖GetCell()
,NumberOfSections()
和RowsInSection()
UITableViewCell
,实现使IntPtr
启用单元格重用myTableView.RegisterClassForCellReuse()
,为其指定自定义类型UITableViewCell
这似乎有效。但是,我想使用具有非默认样式的单元格。正如the next page in the docs所述,UITableViewCellStyle
有几个选项,我想使用UITableViewCellStyle.Value2
。现在,UITableViewCell
有一个带UITableViewCellStyle
选项的构造函数,但我无法使用它,因为单元格重用需要我实现IntPtr
构造函数,我什么都看不到可以从 inside 中访问,可以用来设置样式的构造函数。
有没有办法在不使用UITableViewCellStyle
构造函数的情况下选择不同的UITableViewCell(UITableViewCellStyle style, NSString reuseIdentifier)
选项?
答案 0 :(得分:1)
我不认为在不使用UITableViewCell(UITableViewCellStyle样式,NSString reuseIdentifier)构造函数的情况下加载不同的UITableViewCellStyle选项是不可能的。此构造函数加载基础XIB。
您提到了“非默认样式”,使用您自己的自定义UITableViewCell可以让您自由地根据需要设计布局,添加标签,图像等。在CustomUITableViewCell中创建一个公共方法,然后您可以定义如何显示内容,如下所示。
<强>的UITableView 强>
public class CustomTableView : UITableView
{
static readonly NSString MyCellId = new NSString ("CustomTableViewCell");
public CustomTableView ()
{
RegisterClassForCellReuse(typeof(CustomTableViewCell), MyCellId);
Source = new CustomDataSource();
}
}
<强>的UITableViewCell 强>
public class CustomTableViewCell : UITableViewCell
{
public CustomTableViewCell (IntPtr handle) : base (handle)
{}
public Load(object[] data){
//Create custom view in code
var title = new UILabel();
// etc.
// Or pull in from an XIB
UINib Nib = UINib.FromName ("CustomViewCell_iPad", NSBundle.MainBundle);
}
}
<强> UITableViewSource 强>
public class CustomTableDataSource : UITableViewSource
{
private NSString MyCellId { get; set; }
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
var cell = (CustomTableViewCell)tableView.DequeueReusableCell (MyCellId, indexPath);
cell.load(sampleData[indexPath.row]);
return cell;
}
}