सवाल सरल है: आप UITableViewCell
Xib फ़ाइलों से कस्टम कैसे लोड करते हैं ? ऐसा करने से आप अपनी कोशिकाओं को डिज़ाइन करने के लिए इंटरफ़ेस बिल्डर का उपयोग कर सकते हैं। स्पष्ट रूप से स्मृति प्रबंधन मुद्दों के कारण उत्तर सरल नहीं है। इस धागे में इस मुद्दे का उल्लेख है और एक समाधान का सुझाव दिया गया है, लेकिन पूर्व एनडीए-रिलीज़ है और कोड का अभाव है। यहां एक लंबा सूत्र है जो निश्चित उत्तर प्रदान किए बिना मुद्दे पर चर्चा करता है।
यहाँ कुछ कोड का उपयोग मैंने किया है:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
इस कोड का उपयोग करने के लिए, MyCell.m / .h, का एक नया उपवर्ग बनाएं UITableViewCell
और अपने IBOutlets
इच्छित घटकों के लिए जोड़ें । फिर एक नई "खाली XIB" फ़ाइल बनाएं। IB में Xib फ़ाइल खोलें, एक UITableViewCell
ऑब्जेक्ट जोड़ें , इसके पहचानकर्ता को "MyCellIdentifier" पर सेट करें, और इसकी कक्षा को MyCell पर सेट करें और अपने घटकों को जोड़ें। अंत में, IBOutlets
घटकों से कनेक्ट करें । ध्यान दें कि हमने फ़ाइल का स्वामी आईबी में सेट नहीं किया है।
अन्य तरीके फ़ाइल के मालिक को स्थापित करने की वकालत करते हैं और अगर एक्सिब को अतिरिक्त कारखाना वर्ग के माध्यम से लोड नहीं किया जाता है, तो मेमोरी लीक की चेतावनी दी जाती है। मैंने इंस्ट्रूमेंट्स / लीक्स के तहत उपरोक्त परीक्षण किया और कोई मेमोरी लीक नहीं देखा।
तो Xibs से कोशिकाओं को लोड करने के लिए विहित तरीका क्या है? क्या हम फ़ाइल का स्वामी सेट करते हैं? क्या हमें किसी कारखाने की आवश्यकता है? यदि हां, तो कारखाने के लिए कोड कैसा दिखता है? यदि कई समाधान हैं, तो आइए उनमें से प्रत्येक के पेशेवरों और विपक्षों को स्पष्ट करें ...