Xcode स्टोरीबोर्ड चेतावनी: वर्तमान संदर्भ में बंद वस्तुओं को संदर्भित करता है। वर्तमान कॉन्फ़िगरेशन में इस बाधा को बंद करें


146

यह चेतावनी Xcode 6.1 में होती है। किसी को भी इस चेतावनी का मतलब है और इसके साथ क्या होगा विचार है? बहुत धन्यवाद!

नीचे स्रोत कोड में चेतावनी के साथ एक स्क्रीनशॉट है "

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

कैसे पता करें कि कौन सी बाधा चेतावनी का कारण बनती है? Xcode आपको यह नहीं बताता है कि कौन सी बाधा समस्या है।

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


@wumm हाँ, ऐप को सफलतापूर्वक बनाया और चलाया जा सकता है, मुझे बस इस बात की चिंता है कि कुछ संभावित समस्याएँ किसी भी तरह से हो सकती हैं, जो मुझे अभी तक पूरी नहीं हुई हैं।
झीओ यांग

7
ध्यान दें कि सामान्य रूप से यह समस्या होती है: आपके पास एक आइटम है जो अन-इंस्टाल है, लेकिन, इसमें बाधाएं हैं जो अभी भी स्थापित हैं। सामान्य तौर पर, अन-इंस्टाल्ड आइटम ढूंढें, और इसके सभी अवरोधों के लिए, उन्हें अन-इंस्टॉल्ड चिह्नित करें।
फेटी

@ फैटी कृपया इस मुख्य कारण के साथ स्वीकृत उत्तर को संपादित करें। धन्यवाद
मिलन कामिल्या

जवाबों:


431

यह चेतावनी कष्टप्रद हो सकती है और Xcode 6.1.1 के रूप में होती है। मुख्य समस्या यह है कि आप चेतावनी पर क्लिक करके आसानी से संदर्भित बाधा नहीं पा सकते हैं। मुझे लगता है कि यह एक बग है और जल्दी या बाद में तय हो जाएगा।

हालाँकि, इस बीच आप इस छोटे से बदलाव का उपयोग कर सकते हैं:

चरण 1: कष्टप्रद चेतावनी का पता लगाएँ annoy

कष्टप्रद चेतावनी

चरण 2: चेतावनी पर राइट / Ctrl-क्लिक करें, Reveal in Log😨

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

चरण 3: निम्नलिखित लॉग स्निपेट की सुंदरता को निहारें:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

हम्म् ... यह क्या है ...?

दिलचस्प

चरण 4: प्रोजेक्ट खोज बार में टॉस करें ... ss

खोज

You हां, आपने सही अनुमान लगाया। इसे क्लिक करें।

चरण 5: 😁 OMG! जब तक Apple इस कष्टप्रद बग को ठीक नहीं करता तब तक उत्पादकता के कुछ अतिरिक्त मिनटों का आनंद लें। 😎

wheeee


2016 के लिए ...

  • यदि आप इसे 'रिवील इन लॉग' के साथ नहीं पा सकते हैं, तो रिपोर्ट नेविगेटर को दिखाएं। (यह बाईं ओर के कॉलम पर सबसे दाहिना टैब है।) वहां निर्माण परिणामों में तल्लीनता। यह निर्माण लॉग दिखाएगा, जिसमें बाधा आईडी शामिल है। शिष्टाचार का निर्माण किया

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

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

  • ध्यान दें कि 5/2016 के Xcode के लिए, नाराज होकर आपको कुछ मामलों में इस चेतावनी को खाली करने के लिए Xcode को छोड़ना और पुनः आरंभ करना होगा

  • ध्यान दें कि भ्रम की स्थिति में, एक ही त्रुटि असंबंधित समस्या के कारण हो सकती है (यह Apple बग या त्रुटि भाषा का खराब उपयोग प्रतीत होता है): यदि आपके पास IBInspectableआइटम हैं, और उन्हें अपनी स्विफ्ट फ़ाइलों में नाम बदलने के लिए होता है । Xcode आपके लिए पुराने नाम UserDefinedRuntimeAttributes को नहीं हटाता है। बस "पहचान निरीक्षक" पर क्लिक करें (दाएं पैनल पर आइटम 3) और डूड आइटम हटाएं।

2017 के लिए ...

  • फिर भी एक और आम, और वास्तव में सरल, समस्या का कारण। यदि आप किसी आइटम को अन-इंस्टॉल करने के लिए हुए हैं : लेखन के रूप में, बहुत सरल रूप से Xcode स्वचालित रूप से किसी भी बाधा की स्थापना रद्द करने के लिए नहीं जानता है जो उस आइटम को ले जाता है । काफी बस, किसी भी अन-इंस्टाल्ड आइटम को देखें, और इसके सभी बाधाओं के लिए, बस उन्हें अन-इंस्टाल मार्क करें। (या बस, शायद अस्थाई रूप से अन-इंस्टाल्ड आइटम को पूरी तरह से हटा दें, यह देखने के लिए कि क्या समस्या है।)

28
वह व्याख्या अद्भुत थी। धन्यवाद!
थोमसमाल्ट

7
सप्ताह का मेरा पसंदीदा उत्तर :) और बहुत उपयोगी है। धन्यवाद!
थ्रैप

5
मुझे लगता है कि अब से जवाब में इमोजी की आवश्यकता होनी चाहिए।
जेम्स वेबस्टर

3
क्या होगा अगर रिवील इन लॉग मेरा मामला है?
बकलोलो

6
मेरा राइट क्लिक -> रिवाइल लॉग कुछ भी नहीं कर रहा था इसलिए मैंने इसे रिफ के रूप में उपयोग करके लॉग खोले: stackoverflow.com/questions/19014359/…
terrigenus

39

जब आप अपने स्टोरीबोर्ड में एक दृश्य को निष्क्रिय कर देते हैं, तो यह संदेश शुरू हो जाता है, लेकिन उस दृश्य के आधार पर बाधाओं को निष्क्रिय नहीं किया।

उदाहरण के लिए, आपने एक बटन निष्क्रिय कर दिया है, लेकिन आपके पास अभी भी उस बटन से जुड़ी कुछ अड़चनें हैं। यह एक आंतरिक अवरोध हो सकता है जैसे ऊंचाई या चौड़ाई, या किसी अन्य दृष्टिकोण से दूरी की तरह एक सापेक्ष बाधा।

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


4
आपके जवाब के लिए धन्यवाद! क्या आप इसे और अधिक विशिष्ट बना सकते हैं "दृश्य को निष्क्रिय करें" क्या है? क्या यह एक दृश्य को हटाना है (एक बटन की तरह)? लेकिन चूंकि मैंने पहले ही इसे हटा दिया था, अड़चन भी हटाई जा सकती है और नहीं मिली? और अधिक विस्तार से "बाधा को बंद" कैसे करें, बस इसे चुनें और हटाएं? आपका बहुत बहुत धन्यवाद!
झीओ यांग

2
यदि कोई दृश्य अपने मौजूदा आकार वर्ग के लिए इंटरफ़ेस बिल्डर में "इंस्टॉल" के रूप में चिह्नित नहीं है, तो यह निष्क्रिय है।
DivideByZer0

मेरे स्टोरीबोर्ड में कई ViewControllers हैं। Know मुझे कैसे पता चलेगा कि किस व्यक्ति के पास गैर-स्थापित सबव्यू है?
जोशिमा

आप चेतावनी पर राइट क्लिक कर सकते हैं और "सोर्स कोड" विकल्प चुनें। वहाँ आपको स्पष्ट रूप से संबंधित दृश्य नियंत्रक में संबंधित दृश्य के पदानुक्रम को देखना चाहिए।
जेईईएम ज़ाफ़र

15

यह समाधान मेरे लिए काम करता है।

चूँकि मैंने Xcode 6 में Xcode 6 में विकसित की गई परियोजना से कई वस्तुओं को कॉपी किया था, और Xcode 6 में स्टोरीबोर्ड कई बाधाओं का समर्थन करता है, प्रत्येक बाधा के लिए, मुझे इसे वर्तमान कॉन्फ़िगरेशन में स्थापित करने की आवश्यकता है।

उदाहरण के लिए, मैं "कॉम्पैक्ट चौड़ाई | रेगुलर हाइट" का उपयोग कर रहा हूं, बाधा के लिए मुझे नीचे की तरह सेट करने की आवश्यकता है:

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

जब मैंने अपनी परियोजनाओं में सभी सैकड़ों अवरोधों की जाँच की और साफ और निर्माण किया, तो अंत में चेतावनी गायब हो गई।


1
ध्यान दें कि Installedआपके दृश्य ऑब्जेक्ट विशेषताओं में वे pesky चेकबॉक्स भी हैं । इसलिए सुनिश्चित करें कि आपके द्वारा देखी जा रही वस्तुओं को प्रदर्शित किया गया सही चेकबॉक्स है। चेतावनी आपको बता रही है कि कुछ वस्तुओं को प्रदर्शित नहीं किया जा रहा है current configuration
मैट

यह मेरे लिए भी काम किया। XCode ने कहा कि मेरे पास 12 या 13 चेतावनी हैं, लेकिन उनमें से किसी एक के लिए लॉग में देखना कम से कम 100 था। इसलिए मैं उनमें से प्रत्येक के माध्यम से चला गया, प्रत्येक बाधा के लिए एक wChR जोड़ रहा था और फिर सामान्य 'इंस्टॉल' को अनचेक किया। चेतावनियाँ गायब!
एंड्रियास

ओह, उल्लेख करना भूल गया। मुझे लगभग आधे रास्ते का एहसास हुआ कि आप वास्तव में एक ही समय में उन्हें चुनकर कई बाधाओं के लिए यह प्रक्रिया कर सकते हैं।
एंड्रियास

8

बस अपने मामले को जोड़ना चाहता था कि यह त्रुटि मेरे लिए कैसे हुई: मेरे मामले में, मैं "सीएमडी + स्पेसस्पेस" के साथ एक टेक्स्टफील्ड को हटाना चाहता था। मैंने सीधे सीन-बिल्डर ट्री-व्यू में यह किया:

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

आप देख सकते हैं कि स्नूज़ फ़ील्ड को धूसर कर दिया गया है।

इसलिए यह मेरे लिए आसानी से खोजा गया था। आप वास्तव में चयन करके फ़ील्ड को वास्तव में हटा सकते हैं:

मेनू से संपादित-हटाएं

हैरानी की बात है - यह वास्तव में क्षेत्र (बाधाओं सहित) को हटा देता है। शायद यह किसी को आसानी से इस कष्टप्रद चेतावनी का कारण खोजने में मदद करता है ...


यह वास्तव में सवाल का जवाब नहीं देता है। यदि आपका कोई अलग प्रश्न है, तो आप प्रश्न पूछें पर क्लिक करके पूछ सकते हैं । पर्याप्त प्रतिष्ठा होने पर आप इस प्रश्न पर अधिक ध्यान आकर्षित करने के लिए एक इनाम भी जोड़ सकते हैं । - रिव्यू से
मार्टिन इवांस

3
यह एक और तरीका है जिससे पूछा गया सवाल तय किया जा सकता है। तो बस दूसरों की मदद के लिए इसे जोड़ना चाहते थे ...
डिर्क

धन्यवाद, बहुत मददगार
अहमद एलास्कर

इसने समस्या को हल करने और उसे ठीक करने के तरीके को संकुचित कर दिया। यह मेरे लिए काम किया!
लांस सामरिया

6

विस्तारित स्पष्टीकरण

अन्य उत्तरों के साथ कुछ भी गलत नहीं है। मैं सिर्फ मूल चेतावनी में शब्दांकन पर ध्यान आकर्षित करना चाहता था और कुछ ऐसे उपयोग-मामलों की पहचान करना चाहता था जहाँ यह किसी के वर्कफ़्लो में दिखाई दे सकता है।

बाधा चेतावनी

वर्तमान संदर्भ में बाधा संदर्भ आइटम बंद हो गए।

इसका अर्थ है कि कुछ आइटम (आमतौर पर एक नियंत्रण या कस्टम दृश्य जो सामान्य रूप से दिखाई देता है) एक या अधिक बाधाओं में संदर्भित है (बंद या अनियंत्रित) चेकबॉक्स को "स्थापित" किया गया है। यदि उदाहरण के लिए आप तय करते हैं कि आप मुख्य दृश्य के बाहर अपने स्टोरीबोर्ड में एक नियंत्रण या दृश्य को स्थानांतरित करना चाहते हैं (या आप आकार वर्गों में कुछ दिलचस्प करते समय कभी-कभी देख सकते हैं) तो आप इस चेतावनी को देख सकते हैं यदि नियंत्रण में बाधाएं हैं। ।

अनइंस्टॉल नियंत्रण

अनुशंसित समाधान के साथ:

वर्तमान कॉन्फ़िगरेशन में इस बाधा को बंद करें।

ठीक करने के लिए दो दृष्टिकोण

दस्तावेज़ की रूपरेखा

नेत्रहीन आप अपने स्टोरीबोर्ड में डॉक्यूमेंट की रूपरेखा को खोल सकते हैं और ग्रे आउट की कमी देख सकते हैं जो आपके नियंत्रण / संदर्भ को मुख्य दृश्य के बाहर बैठाते हैं (रूपरेखा को चौड़ा करें, बाधा पर क्लिक करें, और विशेषताओं निरीक्षक को देखें, तेजी से समीक्षा करने के लिए माउस नीचे देखें) । फिर इस संदर्भ (आकार वर्ग) से बाधा को हटा दें। उदाहरण के लिए, मेरे मामले में मैं बस नियंत्रण रख रहा हूं जब तक कि मैं बाद में यह नहीं बताऊं कि इसे कहां प्रस्तुत करना है, इसलिए मैंने बाद तक पूरी तरह से आपत्तिजनक बाधा को हटा दिया। लेकिन एक आकार वर्ग में मैं सिर्फ गुण निरीक्षक में स्थापित चेकबॉक्स का उपयोग करके वर्तमान संदर्भ से बाधा की स्थापना रद्द कर दूंगा।

नेविगेटर / उपकरण खोजें लॉग करें

स्टोरीबोर्ड पर प्रत्येक ऑब्जेक्ट को दिए गए अद्वितीय पहचानकर्ता के माध्यम से समस्या नियंत्रण को खोजने के लिए लॉग नेविगेटर का उपयोग करना जारी रख सकता है। लॉग में यह पीले हाइलाइट किए गए टेक्स्ट से ठीक पहले होगा और आमतौर पर जैसा कि ऊपर दिए गए मेरे उदाहरण में देखा गया है: jvj-mY-DHf

पहचानकर्ता का उपयोग करने के बाद एक Xcode में खोज उपकरण का उपयोग कर सकते हैं (पूरी तरह से) का पता लगाने और हटाने के लिए या (वर्तमान संदर्भ के लिए) अपमानजनक बाधा।

लॉग-नाविक

यदि आप Xml और इसकी सादगी के शौकीन हैं तो आप Storyboard को स्रोत कोड के रूप में भी खोल सकते हैं और आपत्तिजनक विशिष्ट पहचानकर्ता को ढूंढ सकते हैं और xml के उपयुक्त ब्लॉक को हटा सकते हैं।


1

ऐसा होने का एक कारण यह हो सकता है कि आपने एक आकार वर्ग का चयन किया है जो आपकी बाधाओं के अनुकूल नहीं है ( wAny hAnyयह एक सामान्य मामला है)। ऐसे मामले में, बस इंटरफ़ेस बिल्डर में एक अलग आकार वर्ग का चयन करें और आप कर रहे हैं।


1

मेरे लिए, यह तब होता है जब मैंने एक ऑब्जेक्ट को एक नया कंट्रोवर्सी टू ऑब्जेक्ट (नॉट व्यू) सेट किया है, जिसे "कॉन्ट्राटाइन टू मार्जिन" विकल्प के साथ जोड़ा गया है। विकल्प को टिक करने से समस्या हल हो गई (जो डिफ़ॉल्ट है)।


1

मेरे लिए क्या काम किया (और मुझे पता नहीं क्यों) "ट्रेट वेरिएशंस का उपयोग करें" बंद करना है, फिर एक साफ प्रदर्शन करें, फिर उन्हें वापस चालू करें। अगले बिल्ड में कोई चेतावनी नहीं थी।

"ट्रेट वेरिएशंस का उपयोग करें" को बंद करने के लिए, प्रोजेक्ट नेविगेटर में अपना स्टोरीबोर्ड चुनें और फिर फ़ाइल इंस्पेक्टर का चयन करें।

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

फिर बस "ट्रेट वेरिएशंस का उपयोग करें" को अचयनित करें, Shift-CMD K दबाकर क्लीन परफॉर्म करें, और फिर यदि आप उनका उपयोग करना चाहते हैं तो ट्रांजिट वेरिएशन को वापस कर दें।

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


मुझे नहीं लगता कि यह "सही" प्रति से (अड़चनें) गायब हैं, हालांकि यह जवाब मेरे लिए मददगार था क्योंकि जैसे ही मैंने इस स्विच के साथ फ़िड किया, और फिर पिछले कमिटमेंट में बदलाव किए, Xcode अच्छी तरह से किसी भी पुराने / गलत को अपडेट करेगा! / इस तरह की पहले से तय चेतावनी। ऐसा लगता है कि Xcode पुराने दिखाएगा, पहले से तय चेतावनी वास्तव में बहुत बार - Xcode को फिर से शुरू करने से आम तौर पर मेरे लिए मदद नहीं होगी। फ़्लिप करना जो स्विच + को अंतिम प्रतिबद्ध करने के लिए पुनर्स्थापित करता है, इस तरह की अगली "वास्तविक" चेतावनी को दर्शाता है; इस पर क्लिक करने से स्वचालित रूप से आईबी में समस्याग्रस्त बाधा का चयन होगा।
जॉनी

0

मुझे लगा कि यह अन्य उत्तर के कारण एक स्थायी बाधा थी, हालांकि यह एक 'आउटलेट' के कारण था, जो अभी भी मैंने पहले हटाए गए आइटम के लिए किया था। क्या करना है:

  1. अपने ViewController का चयन करें
  2. शीर्ष दाईं ओर स्थित 'आउटलेट' आइकन पर क्लिक करें
  3. अपने आउटलेट्स के माध्यम से देखें और किसी भी ऐसी चीज को सावधानीपूर्वक हटाएं जिसकी आपको आवश्यकता नहीं है

सबसे खराब स्थिति यह है कि आप अपने सभी आउटलेट को हटा देते हैं और बस उन्हें फिर से हुक करते हैं। केस हल हो गया!


0

जैसा कि उल्लेख किया गया है और @ बडकाट के उत्तर में अच्छी तरह से निर्देशित किया गया है किया गया है, मैंने चरणों का पालन किया और बस एक और कदम मैंने उठाने की हिम्मत की!

BadCats जवाब के अंतिम चरण के बाद ले जाने के लिए कदम:

चरण 1:

मैंने इंटरफ़ेस बिल्डर में बाधा का चयन किया और फिर यह ध्यान में रखते हुए कि यह इसके लिए क्या है और फिर इसे हटा दिया।

चरण 2

XCode प्रोजेक्ट बनाएँ और यह दिखाएगा कि आप चेतावनियाँ बढ़ा सकते हैं। ऐसा इसलिए है क्योंकि आपने एक बाधा को हटा दिया है जिसे अच्छी तरह से संकलित करने की आवश्यकता है। तो, तीसरे चरण पर जाएं!

चरण 3

उस बाधा को फिर से जोड़ें जिसे आपने ध्यान में रखा था (जिसे आपने हटा दिया था)। और फिर इसे फिर से बनाएँ!

मेरे लिए चेतावनी सिर्फ ऐसा करके चली गई! मुझे लगता है कि यह कुछ लोगों के लिए काम करेगा!

कारण:

जैसा कि मैं इस चेतावनी के कारण होने वाली समस्या को समझ सकता था, मेरे पास एक IBOutlet से जुड़ा एक लेबल था, लेकिन इसका नाम एक बड़े अक्षर से शुरू हो रहा था। इसलिए मैंने ViewController में एक साधारण पत्र के साथ इसका नाम बदल दिया और आईबी में इसे बदलने के लिए आया। मैंने पिछले IBOutlet को हटा दिया और इसे नए नाम वाली संपत्ति के नाम से जोड़ने और कनेक्ट करने के लिए चला गया। फिर मैंने देखा कि एक नई चेतावनी सामने आई है।

पहले मैंने निम्नलिखित उत्तर की कोशिश की इस धागे में भी , लेकिन इससे कोई फायदा नहीं हुआ!

चीयर्स!


0

मेरा मामला लेबल है, तो नियंत्रण + X पर क्लिक करें, यह अक्षम हो जाएगा, लेकिन मैं इसके साथ कोई काम नहीं करता हूं। जब मैं निर्माण करूंगा, तो यह चेतावनी दिखाएगा। समाधान: लेबल हटाएं या लेबल के लिए चुने गए नियंत्रण + X को हटा दें।


0

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


0

मुझे स्टैक दृश्य पर समस्या थी। बाधाओं को हटाने और उन्हें फिर से जोड़ने से कोई फायदा नहीं हुआ। सफाई और पुनर्निर्माण में मदद नहीं मिली।

मेरे लिए, समाधान एक पूरी तरह से नया स्टैक व्यू ऑब्जेक्ट बनाना था।

फिर पुराने स्टैक दृश्य से सभी तत्वों को नए स्टैक दृश्य में ले जाएं।

पुराने स्टैक दृश्य को हटाने से समस्या ठीक हो गई।

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