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


123

मुझे स्टोरीबोर्ड से यह चेतावनी मिल रही है - प्रोटोटाइप टेबल सेल में पुन: उपयोग करने वाले पहचानकर्ता होने चाहिए।

मैंने पहचान का नाम बदलकर इंस्पेक्टर इंस्पेक्टर रख दिया है, लेकिन ऐसा नहीं लगता कि इस चेतावनी को हटा दिया गया है।

कोई सुझाव?


आपने या तो गलत फ़ील्ड भर दी है या आपके पास एक से अधिक टेबल व्यू हैं। क्या आप गुण निरीक्षक का स्क्रीनशॉट पोस्ट कर सकते हैं?
जर्तर्टन

3
अब ठीक है दोस्त। मैंने एक उपाय खोज लिया है। पहचानकर्ता के लिए मान पुन: उपयोग करने वाले के समान होना चाहिए। :)
का.होना

क्या आपने हर सेल के लिए एक पहचानकर्ता निर्धारित किया है?
मिक मैक्लम

हाय होंडा! क्या आप मुझे बता सकते हैं कि आपने क्या किया क्योंकि मुझे वही त्रुटि मिल रही है।
वरुण मेहता

2
मैंने देखा है कि कभी-कभी (वर्तमान में नवीनतम Xcode 5 बीटा 5 (5B103i) का उपयोग करके) स्टोरीबोर्ड में त्रुटि / चेतावनी के गलत स्थानों को उजागर करता है। इसलिए यदि आप चेतावनी पर क्लिक करेंगे तो यह कभी-कभी गलत स्थान दिखाएगा जहाँ समान चेतावनी पहले से तय की जा सकती है। मेरा सुझाव है कि मैन्युअल रूप से आपके स्टोरीबोर्ड में मौजूद किसी भी तालिका के माध्यम से जाएं और जांचें कि क्या कोई अन्य सेल गायब पहचानकर्ता के साथ है। ऊपर ने इस चेतावनी के साथ मेरी समस्या हल कर दी। धन्यवाद @ K.Honda ने सवाल पूछने के लिए क्योंकि इस विषय ने मुझे यह समझने में मदद की कि समस्या को कैसे ठीक किया जाए।
जस्टास

जवाबों:


159

चेतावनी को बंद करने के लिए आपको सेल पहचानकर्ता को एक नाम देना होगा:

यहाँ छवि विवरण दर्ज करें


14
मुझे खुशी हुई। करीब xcode - यह खोलें, और फिर पहचानकर्ता बदल
Idan Magled

7
जब चेतावनी का अर्थ है कि आपके StoryBoard में कहीं भी पहचानकर्ता के बिना एक सेल अभी भी है
साइमनक्स

यदि आपके पास 1 से अधिक प्रोटोटाइप कोशिकाएं हैं, तो आपको उन्हें सभी को एक संकेतक देना होगा, अन्यथा सिर्फ प्रोटोटाइप सेल में नंबर एक पर सेट करना होगा
user1700737

6
मुझे व्युत्पन्न डेटा फ़ोल्डर को हटाना पड़ा (विंडोज रिबूट के एक्सकोड के बराबर) और इस गंभीर चेतावनी से छुटकारा पाने के लिए पुनर्निर्माण किया गया।
माइकल मैकगुएर

इसने मेरे लिए काम किया: करीबी Xcode, खुला / उपयोगकर्ता / उपयोगकर्ता नाम / लाइब्रेरी / डेवलपर / Xcode / DerivedData खोजक में, और इसकी सभी सामग्री को हटाएं (स्वयं DerivedData फ़ोल्डर नहीं)।
dldnh

18

एक और तरीका यह है कि एट्रीब्यूट इंस्पेक्टर में टेबल व्यू 'प्रोटोटाइप सेल' की संपत्ति को शून्य पर सेट करें, अगर आप सेल को प्रोग्रामेटिक रूप से उपयोग करके परिभाषित कर रहे हैं।

इंस्पेक्टर इंस्पेक्टर में 0 में प्रोटोटाइप सेल सेट करना


9

जैसा कि स्टोरीबोर्ड वास्तव में एक्सएमएल फ़ाइल है, इसलिए एक और चाल है कि आप किसी भी टेक्स्ट एडिटर (एक्सकोड नहीं!) के साथ अपना स्टोरीबोर्ड खोलें और सभी टेबल व्यूकोड नोड्स खोजने की कोशिश करें। उदाहरण के लिए CMD + F<tableViewCell contentMode="scaleToFill" दबाएं , और Enter दबाएँ। आपको शायद पता चल जाएगा, पंक्तियों को इस एक के लिए:

<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="GenericCellID" id="kBr-Qn-Tki">

कृपया अपना ध्यान reuseIdentifier="GenericCellID"मुख्य मूल्य पर दें। जिन पंक्तियों में आग लग जाती है (बिना पुन: पहचानकर्ता के) ऐसे प्रमुख मूल्य नहीं होंगे। अपने टेक्स्ट एडिटर में ऊपर नोड्स देखें और आप tableViewControllerएलकोड के उत्तर के अनुसार नोड को एक्सकोड के स्टोरीबोर्ड एडिटर में जांचना और ठीक करना चाहते हैं।


1
आप वास्तव में अपने स्टोरीबोर्ड को कोड के रूप में Open AsSource Code
एक्सकोड

4

यदि आपका Xcode चेतावनी फिर भी दूर नहीं जाता है, भले ही आपने reuseIdentifier सेट किया हो, तो मेनू "उत्पाद -> स्वच्छ" आज़माएं। इसने मेरे लिए मदद की और उसके बाद, चेतावनी अब दिखाई नहीं दी।


2

चूँकि इस चेतावनी पर डबल क्लिक करने से जंगली हंस का पीछा हो सकता है (विशिष्ट UITableViewCell चयनित नहीं होता है), बस यह जोड़ना चाहते थे कि इनमें से कुछ चेतावनियाँ स्वतः हल हो जाएंगी , कुछ नहीं

यदि आप आश्वस्त हैं कि आपने स्टोरीबोर्ड में अपनी सभी कोशिकाओं को टैग कर दिया है, तो परियोजना का पुनर्निर्माण करें - आपकी चेतावनी गायब हो सकती है (जैसा कि मेरा था)।


2

एक जय घोड़ी: XCode को फिर से शुरू करना मेरे लिए काम कर गया (लेकिन यह शायद सिर्फ एक मैनुअल पुनर्निर्माण था जो आवश्यक था)।


1

मुझे यह चेतावनी Xcode 7 के लिए मिली। मैं स्विफ्ट के साथ काम कर रहा हूं। मैंने शुरुआती व्यू कंट्रोलर के लिए नेविगेशन कंट्रोलर नहीं जोड़ा है। जब मैंने ऐसा किया .. तो मुझे स्टोरीबर्ड से यह चेतावनी मिली। मैंने क्या किया है:

  1. दो सेगमेंट हैं
    1. नेविगेशन कंट्रोलर से लेकर रूट व्यू कंट्रोलर और
    2. रूट व्यू कंट्रोलर से अपने शुरुआती व्यू कंट्रोलर तक।
  2. प्रारंभिक दृश्य नियंत्रक से रूट व्यू कंट्रोलर को जोड़ने वाले सेग को चुनें।
  3. पहचानकर्ता का नाम बताइए
  4. कंट्रोलर के "प्रोटोटाइप" लिखित भाग का चयन करें -> वहां आपको एक विकल्प के रूप में पहचानकर्ता दिखाई देगा।
  5. पहचानकर्ता का वही नाम डालें जो पहले दर्ज किया गया था।

चेतावनी जाती है .. अगर sdk साफ नहीं है :)


1

यह सुनिश्चित करें कि आप पुनर्स्थापना आईडी के बजाय ऑब्जेक्ट पर पुन: उपयोग पहचानकर्ता सेट कर रहे हैं । दोनों स्टोरीबोर्ड के माध्यम से उपलब्ध हैं, और आसानी से भ्रमित हैं।

स्टोरीबोर्ड XML फ़ाइल में आप सेटिंग करना चाहते हैं reuseIdentifier, नहीं restorationIdentifier


0

मैंने देखा है कि यह त्रुटि तब होती है जब आपके पास कई प्रोटोटाइप कोशिकाएँ (तालिका के गुणों में) होती हैं और उन सभी को पहचानकर्ताओं को पुन: उपयोग करने के लिए नहीं दिया होता है ।


मैंने यह भी देखा है, क्या एक बार में सभी कोशिकाओं को नाम देने का एक तरीका है या इन चेतावनियों को हटाने का एक और तरीका है?
कैट्सलोवजैज

1
प्रत्येक प्रोटोटेय सेल को अपने स्वयं के अनूठे नाम की आवश्यकता होती है। इसलिए इसे स्वचालित रूप से करने का कोई तरीका नहीं है
विंसेंट

0

पहचानकर्ता वह नाम है जिसे आप में निर्दिष्ट करते हैं .m फ़ाइल। जब यह भरा नहीं जाता है तो सेल को संदर्भित करना संभव नहीं होता है।


0

यह प्रोग्रामेटिक रूप से पुन: पहचानकर्ता की स्थापना के लिए है

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath*)indexPath 
{
    static NSString *cellIdentifier = @"wot";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

    if (!cell)
        cell = [[UITableViewCell alloc] initWithStyle: someStyle reuseIdentifier: cellIdentifier];

    return cell;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.