2012-08-27 16 views
43

में प्रोटोटाइप कोशिकाओं में आइटम जोड़ने पर अजीब त्रुटि मेरे पास काफी बड़ी परियोजना है (~ 20 दृश्य)। जिसमें से एक कस्टम UITableViewController क्लास के साथ एक TableViewController है। मैंने सेल को एक पुन: उपयोग पहचानकर्ता दिया है, और इसमें एक लेबल जोड़ा है। जब मैं कोशिश करते हैं और Ctrl + UITableViewController हेडर फाइल करने के लिए लेबल खींचें एक आउटलेट बनाने के लिए, मैं निम्नलिखित त्रुटि मिलती है:स्टोरीबोर्ड-आईबी

error: Illegal Configuration: Connection "tableInfoView" cannot have a prototype object as its destination.

यह क्या है? क्या मैं कुछ स्पष्ट दिख रहा हूं? या क्या मुझे कस्टम सेल क्लास बनाने और उस आउटलेट को खींचने की ज़रूरत है? यदि हां, तो मैं उस डेटा को निर्दिष्ट कैसे करूं जो UITableViewController से प्रत्येक सेल के लिए विशिष्ट रूप से प्रदर्शित होता है?

+10

आप तालिका दृश्य नियंत्रक में एक आउटलेट के प्रोटोटाइप के लेबल कनेक्ट नहीं कर सकता क्योंकि नियंत्रक प्रोटोटाइप का स्वामी ('UITableViewCell' है) नहीं है।गतिशील कोशिकाओं के प्रोटोटाइप के लिए, आपको सेल पर एक टैग सेट करने की तरह कुछ करने की आवश्यकता है और सेल को हटाने के बाद लेबल का उपयोग करके उसे देखना होगा। –

+0

बस यह पता लगाया: पी आपकी मदद के लिए धन्यवाद! इसे एक उत्तर के रूप में लिखें और मैं इसे स्वीकार करूंगा। –

उत्तर

67

वास्तव में आप UITableView प्रतिनिधि दृश्य नियंत्रक में गतिशील सेल प्रोटोटाइप से आउटलेट नहीं बना सकते हैं।

आपको UITableViewCell उपclass करना होगा और फिर इस कक्षा को अपने प्रोटोटाइप में विशेषता होगी।

फिर आप लेबल से UITableViewCell सबक्लास हेडर फ़ाइल में Ctrl-Drag कर सकते हैं।

फिनली आप UITableViewCell हेडर फ़ाइल आयात करने के बाद प्रतिनिधि कोड में इस आउटलेट तक पहुंच सकते हैं।

यह "गतिशील पंक्ति सामग्री के लिए तकनीक" अनुभाग में ऐप्पल there द्वारा प्रलेखित है।

+0

समूहबद्ध कोशिकाओं के लिए कोई रास्ता है? मुझे इसके साथ मुश्किल समय हो रहा है .... – user805981

+0

"समूहबद्ध कोशिकाओं" से आपका क्या मतलब है? – dulgan

1

मुझे एक ही समस्या का सामना करना पड़ा लेकिन बाद में यह पता चला कि यह सिर्फ एक मूर्खतापूर्ण गलती थी। मैं गलती से भी मेरे नियंत्रक के @interface

यह हो सकता है आपकी समस्या का सेल से लेबल घसीटा। बस एक बार जांचें।

+0

मुझे नहीं लगता कि पोस्टर आईबीएक्शन मांग रहा है बल्कि नियंत्रण को कॉन्फ़िगर करने के लिए एक आउटलेट है। –

+0

@ लेवी रॉबर्ट्स मैं यहां आईबीएक्शन के बारे में बात नहीं कर रहा हूं। – thesummersign

2

मुझे एक ही त्रुटि थी। भविष्य के पाठकों के लिए बस एक और पोटेंटियल रूट कारण जोड़ने के लिए:

मेरे मामले में मैंने एक प्रोटोटाइप सेल से अगले तक एक नियंत्रण (इस मामले में एक बटन) की प्रतिलिपि बनाई और कार्रवाई अभी भी पड़ोसी सेल को संदर्भित करती है। मेरी तालिका में कई अलग-अलग प्रोटोटाइप कोशिकाएं हैं।

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

10

या आप लेबल एक टैग दे सकता है (उदाहरण के लिए 100) और

myLabel = [myTableView viewForTag:100]; 

का उपयोग लेबल

-1

सही पुन: उपयोग के प्रोटोटाइप सेल के लिए स्टोरीबोर्ड में मीटर फ़ाइल में प्रयुक्त पहचानकर्ता सेट प्राप्त करने के लिए मेरे पास एक ही स्थिति थी और इससे मुझे

+0

mi8 बेवकूफ बनें लेकिन गलती हम भूल जाएंगे !!! – Wodjefer

-2

समस्या ठीक होने पर सही होने पर हर चीज करने के बाद बस सभी आउटलेट हटा दिए गए और उन्हें सावधानी से दोबारा जोड़ा और यह मेरे लिए बहुत अच्छा काम किया।

1

लेबल टैग करें और आप व्यू कंट्रोलर में कहीं भी लेबल तक पहुंच सकते हैं जैसे टेबल व्यू से viewWithTag।

UILabel *destinationLabel = (UILabel *)[self.tableView viewWithTag:1]; 


    destinationLabel.text = @"Label Destaination";