2012-06-15 14 views
11

मेरे पास स्टोरीबोर्ड में मैक किए गए प्रोटोटाइप कोशिकाओं के साथ एक UITableViewController उप-वर्ग है।क्या dequeueReusableCellWithIdentifier: मेरे UITableViewCell सबक्लास में प्रारंभकर्ता को कॉल करें?

cellForRowAtIndexPath प्रतिनिधि विधि जो कोड सेट करता है, में उचित मात्रा में कोड है। समस्या यह है कि अगर सेल को फिर से पुन: उपयोग पूल से हटाया जा रहा है, तो मुझे इसकी अधिक आवश्यकता नहीं है, क्योंकि यह पहले ही किया जा चुका है जब सेल पहली बार हटा दिया गया था। मैं इसे स्टोरीबोर्ड में नहीं कर सकता क्योंकि कुछ गुण हैं जो मैं केवल प्रोग्रामेटिक तक पहुंच सकता हूं।

क्या UITableViewController स्टोरीबोर्ड से प्रोटोटाइप सेल लेते समय मेरे UITableViewCell सबक्लास में प्रारंभकर्ता को कॉल करता है? मैंने (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier की कोशिश की लेकिन यह प्रक्रिया का हिस्सा नहीं प्रतीत होता है।

उत्तर

12

जब एक UITableView इंस्टेंस dequeueReusableTileWithIdentifier: के लिए कॉल करता है, तो सेल को पुन: प्रारंभ नहीं किया जाता है। इसके बजाए, उस कॉल में, UITableViewCell जिसे हटाया गया है, -(void)prepareForReuse पर कॉल करेगा। ऐसा इसलिए है क्योंकि सेल को पुन: प्रारंभ करना महंगा है, और यदि हम इसके पुन: उपयोग की तैयारी के लिए एक बहुत ही सरल विधि प्रदान कर सकते हैं (एह, एह, इसे प्राप्त करें?) यह पूरे सीपीयू काम को बचाता है।

एर्गो, यदि आप कस्टम सेल का उपयोग कर रहे हैं, तो UITableViewCell prepareForReuse ओवरराइड करें।

10

मैंने शायद मेरे प्रश्न को ठीक से वाक्यांश नहीं दिया लेकिन मैं वास्तव में (void)awakeFromNib था।

सेल को अस्वीकार कर दिया जाता है और पुन: उपयोग नहीं किया जाता है। मुझे कुछ सेटअप प्रोग्रामेटिक रूप से करने की अनुमति देता है कि स्टोरीबोर्ड में ऐसा करना समझ में नहीं आता है।

+1

(vodi) awakeFromNib केवल एक बार होने वाली चीजों के लिए सही काम करता है, जैसे UILabel को एक इशारा पहचानकर्ता जोड़ना। –

संबंधित मुद्दे