IB'de kendi UITableViewCell'imi tasarlayabiliyorum. Ancak, IB'de tanımladığım etikete erişmeye çalışırken null ref istisnası almaya devam ediyorum.Arabirim Oluşturucu'dan özel UITableViewCell nasıl kullanılır?
İşte yapıyorum: Interface Builder olarak
:
- ben "Görünüm" kaldırıldı ve bunun yerine bir UITableViewCell ekledi.
- UITableViewCell sınıfını "
TestCellView
" olarak değiştirildi. - Hücre için bir UILabel eklendi.
TestCellView
için bir "oLblText
" çıkışı eklendi ve UILabel'ı buna bağladı.- Sınıfın tanımlayıcısını "TestCellView" olarak değiştirdim.
TestCellView.xib.cs
public partial class TestCellView : UITableViewCell
{
public TestCellView(string sKey) : base(UITableViewCellStyle.Default, sKey)
{
}
public TestCellView(IntPtr oHandle) : base(oHandle)
{
}
public string TestText
{
get
{
return this.oLblText.Text;
}
set
{
// HERE I get the null ref exception!
this.oLblText.Text = value;
}
}
}
Uygulamak ** TestCellView.designer.cs ** benim tablonun Kaynakta
[MonoTouch.Foundation.Register("TestCellView")]
public partial class TestCellView {
private MonoTouch.UIKit.UILabel __mt_oLblText;
#pragma warning disable 0169
[MonoTouch.Foundation.Connect("oLblText")]
private MonoTouch.UIKit.UILabel oLblText {
get {
this.__mt_oLblText = ((MonoTouch.UIKit.UILabel)(this.GetNativeField("oLblText")));
return this.__mt_oLblText;
}
set {
this.__mt_oLblText = value;
this.SetNativeField("oLblText", value);
}
}
}
:
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
TestCellView oCell = (TestCellView)tableView.DequeueReusableCell("myCell");
if(oCell == null)
{
// I suppose this is wrong but how to do it correctly?
// this == my UITableViewSource.
NSBundle.MainBundle.LoadNib("TestCellView", this, null);
oCell = new TestCellView("myCell");
}
oCell.TestText = "Cell " + indexPath.Row;
return oCell;
}
Lütfen, her hücre için bir UIViewController içeren bir çözüm istemediğimi unutmayın. Bunu yaparken internette birkaç örnek gördüm. Ben sadece toplam overkill olduğunu düşünüyorum.
Neyi yanlış yapıyorum?
Ben şimdi o var aynen böyle. Ben sadece bir denetleyiciye sahip olmaktan hoşlanmıyorum. Nedeni: varsayılan hücre stillerini kullanırken bir denetleyicim de yok. Bu yüzden, Apple, NO kontrolörüne ihtiyaç olduğuna karar verdi. Özel hücreler oluştururken, hücre başına bir denetleyiciye sahip olmamızı istiyorlar. – Krumelur
Varsayılan hücre stillerini kullandığınızda, hücreler program aracılığıyla oluşturulduğundan, hiçbir denetleyiciye gerek duyulmuyor. Ancak, genel olarak, bir NIB dosyasından yüklenen, kullanıcı arabirimi nesnelerini kullanmak istersiniz. Sadece bir NIB dosyasındaki özel bir hücreyi bırakmak yeterli değildir. Dosyanın Sahibi ile bir şekilde bağlanmalıdır, ki bu durumda UIViewController olmalıdır. –