2012-10-22 9 views
17

मेरे पास दो अलग-अलग नियंत्रक में दो अलग-अलग टेबलव्यू हैं। लेकिन कोशिकाओं, जिन्हें मुझे प्रदर्शित करने की आवश्यकता है, समान दिखते हैं। मैंने एक तालिका में एक प्रोटोटाइप सेल बनाया है और UiTableViewCell subclassed। अब, अगर मैं एक ही सेल को एक अलग नियंत्रक में उपयोग करना चाहता हूं, तो मैं इसका उपयोग कैसे कर सकता हूं?क्या मैं एकाधिक तालिका दृश्यों में एक एकल प्रोटोटाइप सेल का उपयोग कर सकता हूं?

यदि मैं केवल नए नियंत्रक में उस कस्टमसेल फ़ाइल को आयात करता हूं और स्टोरीबोर्ड में दिए गए समान पहचानकर्ता का उपयोग करके इसे डेक करता हूं, तो यह काम नहीं करेगा। यह में

अभिकथन विफलता कहते हैं - [UITableView _configureCellForDisplay: forIndexPath:]

, कारण न आया हुआ अपवाद 'NSInternalInconsistencyException' की वजह से एप्लिकेशन समाप्त: 'UITableView डेटा स्रोत tableView से एक सेल लौटाएगा: cellForRowAtIndexPath: '

तो, स्पष्ट रूप से इसका मतलब है, सेल शून्य है। तो मैं स्टोरीबोर्ड से उसी सेल को कैसे चालू कर सकता हूं? क्या यह संभव है या मुझे नई तालिका के लिए एक अलग कस्टमसेल भी बनाना है?

उत्तर

24

कश्मीर पोस्ट करने के लिए चाहते हो सकता है .. मैं समझ गया। सबसे पहले,

मैं दो अलग-अलग टेबलव्यू में एक प्रोटोटाइप सेल का उपयोग नहीं कर सकता। लेकिन, मैं दो अलग-अलग तालिकादृश्यों में एक ही तालिका व्यूसेल सबक्लास का उपयोग कर सकता हूं।

इसे प्राप्त करने के लिए, केवल एक प्रोटोटाइप सेल को एक नियंत्रक से कॉपी करना होगा और इसे अन्य तालिकादृश्य के प्रोटोटाइप सेल के रूप में पेस्ट करना होगा। चिपका हुआ टेबलव्यू का वर्ग वही रहता है। बस reuseIdentifier बदलें। और इसका इस्तेमाल करें।

संपादित करें: यदि आपके सेल में काफी जटिल UI है, तो यह अकेले सेल के लिए अलग xib बनाने के लिए और अधिक समझ में आता है। फिर तालिका दृश्य के साथ प्रोग्रामेटिक register the xib। इस तरह, आपके पास सेल की केवल एक प्रति होगी और यूई में बदलाव होने पर इसे बनाए रखने के लिए बेहतर होगा।

+4

मेरे लिए, पुन: उपयोगकर्ता को बदलने के लिए भी आवश्यक नहीं था। –

+0

धन्यवाद यह काम करता है! – coolbeet

0

यदि आप XIB में एक कस्टम सेल बनाते हैं तो इसे ठीक काम करना चाहिए। हालांकि, मुझे संदेह है कि सेल के identifier समस्या का कारण बन गया है। प्रत्येक तालिका दृश्य नियंत्रक के लिए अपने सेल के पहचानकर्ता को बदलने का प्रयास करें।

यदि ऐसा नहीं है, तो आप स्रोत कोड

-2

मैंने अलग-अलग ऐप्स में एक ही UITableViewCell का उपयोग किया है। बस एक ऐप में एक tableViewCell कॉपी करें। दोनों ऐप्स में एक ही लेआउट और ऐसा है। ऐप्स एक ही कार्यक्षेत्र से संबंधित नहीं हैं। सेटअप अच्छा काम करता है, कोई समस्या या त्रुटियां नहीं .. बस यह नहीं पता कि यह अच्छा अभ्यास है या नहीं।

1

आप अलग-अलग व्यू कंट्रोलर में एक ही प्रोटोटाइप सेल का उपयोग कर सकते हैं, आपको इसे नियंत्रक के टेबलव्यू से हटा देना होगा जिसमें आपने इसे डिज़ाइन किया था।

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let viewControllerInWhichCellWasDefined = tabBarController?.viewControllers?[0] 
    let cell = viewControllerInWhichCellWasDefined.tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath) 
    return cell 
} 
संबंधित मुद्दे

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