我使用 Xamarin iOS 设计器为我的 TableView 设计自定义 TableViewCell 类。 但是除单元格本身外,所有单元格 subview 属性( socket )都返回 null。
我的自定义单元格类:
partial class VehiclesTableCell : UITableViewCell
{
public VehiclesTableCell(IntPtr handle) : base(handle) { }
public void UpdateCell(string licensePlate) {
licensePlateLabel.Text = licensePlate; //hit the null reference exception for licensePlateLabel
}
}
生成的部分类:
[Register ("VehiclesTableCell")]
partial class VehiclesTableCell
{
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UILabel licensePlateLabel { get; set; }
void ReleaseDesignerOutlets ()
{
if (licensePlateLabel != null) {
licensePlateLabel.Dispose ();
licensePlateLabel = null;
}
}
}
还有我的表源类的 GetCell:
public class VehiclesTableSource : UITableViewSource
{
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) {
// Dequeueing the reuse cell
var cell = (VehiclesTableCell)tableView.DequeueReusableCell(new NSString(typeof(VehiclesTableCell).Name));
// Set cell properties
cell.UpdateCell(LicensePlate);
// Return the cell with populated data
return cell;
}
}
正如我们所见,生成的代码有一个 licensePlate 导出,那么为什么它的属性为 null? Storyboard不应该自动实例化它的所有 subview 吗? 至少它发生在所有其他情况下。
最佳答案
我的自定义 TableViewCell
也遇到了同样的问题。我发现问题出在 TableView.RegisterClassForCellReuse (typeof(MyCell), MyCellId)
上。我必须将其更改为 TableView.RegisterNibForCellReuse(UINib.FromName("MyCell", NSBundle.MainBundle), MyCellId)
才能加载我的 .xib。
关于iOS自定义TableViewCell类 subview 返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24485823/