Ios 来自IB的原型单元的引用
我正在用Ios 来自IB的原型单元的引用,ios,uitableview,xamarin.ios,Ios,Uitableview,Xamarin.ios,我正在用MonoTouch中的故事板做iOS项目 我有UITableView的自定义类(myCustomTableFoo),并在IB中指定了该类的原型单元格。然后我想以编程方式实例化该类。糟糕的是,它缺少原型单元格,我不知道如何将原型单元格插入到以编程方式创建的表对象中 我有一个故事板,我想在所有继承的表类中使用IB中的原型单元格。我认为在这种情况下,monotuch可能与Objective-c非常相似 您可以使用 this._tableView.RegisterClassForCellReus
MonoTouch
中的故事板做iOS
项目
我有UITableView的自定义类(myCustomTableFoo
),并在IB中指定了该类的原型单元格。然后我想以编程方式实例化该类。糟糕的是,它缺少原型单元格,我不知道如何将原型单元格插入到以编程方式创建的表对象中
我有一个故事板,我想在所有继承的表类中使用IB
中的原型单元格。我认为在这种情况下,monotuch
可能与Objective-c非常相似 您可以使用
this._tableView.RegisterClassForCellReuse(typeof(MyCell), new NSString("MyReuseIdentifier"));
然后,您可以使用
this._tableView.DequeueReusableCell("MyReuseIdentifier");
单元格将自动实例化。您确实需要使用[register(“MyCell”)
注册您的类,并且它应该有一个类似
public MyCell(IntPtr handle) : base(handle) {
}
但有一件事,我认为你不能重用你在故事板中定义的单元格。如果你想在不同的TableView实例中重用相同的单元格,你可以为你的单元格创建一个唯一的Nib,然后像这样做就可以了:
public partial class MyCell : UITableViewCell {
private MySuperCellView _mySuperNibView;
public MyCell (IntPtr handle) : base (handle) {
}
private void checkState() {
// Check if this is the first time the cell is instantiated
if (this._mySuperNibView == null) {
// It is, so create its view
NSArray array = NSBundle.MainBundle.LoadNib("NibFileName", this, null);
this._mySuperNibView = (MySuperCellView)Runtime.GetNSObject(array.ValueAt(0));
this._mySuperNibView.Frame = this.Bounds;
this._mySuperNibView.LayoutSubviews();
this.AddSubview(this._mySuperNibView);
}
}
public object cellData {
get { return this._mySuperNibView.cellData; }
set {
this.checkState();
this._mySuperNibView.cellData = value;
}
}
}
在这里,我使用的是一个在外部Nib上定义的通用视图。如果数据尚未实例化,我会在将其输入单元格时手动实例化它。这通常发生在单元格第一次实例化时。第一种方法不起作用。虽然它不是在RegisterClassForCell之后抛出exeption,而是在真正的proto之后抛出exeption键入cell not instanced。我将尝试第二个建议。使用以下方法完成第二个建议:。谢谢!