मैं आईबी में अपना खुद का UITableViewCell डिज़ाइन करने में सक्षम होना चाहता हूं। लेकिन आईबी में परिभाषित लेबल तक पहुंचने का प्रयास करते समय मुझे एक शून्य अपवाद अपवाद मिल रहा है।इंटरफ़ेस बिल्डर से कस्टम UITableViewCell का उपयोग कैसे करें?
यहाँ मैं क्या कर रहा है:
इंटरफ़ेस बिल्डर में:
- मैं "देखें" हटा दिया और इसके बदले एक UITableViewCell गयी।
- UITableViewCell की कक्षा को "
TestCellView
" में बदल दिया। - सेल में एक UILabel जोड़ा गया।
- "
TestCellView
पर आउटलेट जोड़ा गया और UILabel को उससे जोड़ा गया। - कक्षा के पहचानकर्ता को "TestCellView" में बदल दिया।
लागू 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;
}
}
}
** TestCellView.designer.cs **
[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;
}
कृपया ध्यान दें कि मुझे ऐसा समाधान नहीं चाहिए जिसमें प्रत्येक सेल के लिए UIViewController शामिल हो। मैंने वेब पर कुछ उदाहरण देखे हैं। मुझे लगता है कि यह कुल ओवरकिल है।
मैं क्या गलत कर रहा हूं?
यह ठीक है कि मेरे पास अब यह है। मुझे बस नियंत्रक होने की इच्छा नहीं है। कारण यह है: डिफ़ॉल्ट सेल शैलियों का उपयोग करते समय मेरे पास नियंत्रक नहीं होता है। तो वहां, ऐप्पल ने फैसला किया कि कोई नियंत्रक की आवश्यकता नहीं है। जब कस्टम कोशिकाओं को creaing, वे चाहते हैं कि हम प्रति सेल एक नियंत्रक है। – Krumelur
हाँ जब आप डिफ़ॉल्ट सेल शैलियों का उपयोग कर रहे हैं, तब से कोई नियंत्रक की आवश्यकता नहीं होती है क्योंकि कोशिकाओं को प्रोग्रामेटिक रूप से बनाया जा रहा है। लेकिन आप सामान्य रूप से सेल, उपयोगकर्ता इंटरफ़ेस ऑब्जेक्ट्स का उपयोग करना चाहते हैं, जो कि एनआईबी फ़ाइल से लोड होते हैं। एनआईबी फ़ाइल में बस कस्टम सेल छोड़ना पर्याप्त नहीं है। इसे किसी भी तरह से अपने फ़ाइल के मालिक से जोड़ा जाना चाहिए, इस मामले में, एक UIViewController होना चाहिए। –