Xcode: "प्रवेश बिंदुओं की कमी के कारण दृश्य अनुपलब्ध है" लेकिन इसे खोज नहीं सकते


89

Xcode 4.5.2 मुझे निम्नलिखित चेतावनी देता है:

Unsupported Configuration    
Scene is unreachable due to lack of entry points and does not have an identifier 
for runtime access via -instantiateViewControllerWithIdentifier:.

दुर्भाग्य से मैं कम हुए दृश्य की पहचान नहीं कर सकता। इश्यू नेविगेटर में चेतावनी का चयन स्टोरीबोर्ड में कुछ भी उजागर नहीं करता है। मेरे पास एक काफी जटिल स्टोरीबोर्ड (30+ दृश्य) है।

कोई सुझाव?

चेतावनी के लिए स्क्रीनशॉट

जवाबों:


50

जब यह धागा पुराना है, तो मुझे यह बताने का उत्तर नहीं मिला कि मेरे लिए क्या काम किया गया था, इसलिए यहाँ जाता है ...

मेरे पास स्टोरीबोर्ड की यह त्रुटि और दृश्य परीक्षा थी कि सभी व्यू कंट्रोलर रूट व्यू कंट्रोलर से जुड़े हुए दिखाई दिए।

मैंने स्टोरीबोर्ड में सभी 17 दृश्य नियंत्रकों के नामकरण की कोशिश की (जैसा कि @ bobnoble का उत्तर है)। मैंने व्यू कंट्रोलर के लंबे नाम के आधार पर एक नामकरण सम्मेलन का उपयोग किया, उदाहरण के लिए "जॉब्स व्यू कंट्रोलर" के लिए "jvc"। जब मैंने निर्माण करने की कोशिश की, तो मुझे एक त्रुटि संदेश मिला जिसमें एक दृश्य नियंत्रक को एक डुप्लिकेट नाम दिया गया था। चीजों को नीचे ट्रैक करते हुए, मैंने पाया कि मेरे पास एक दृश्य नियंत्रक का वास्तविक डुप्लिकेट था जो इसके जुड़वा के शीर्ष पर बिल्कुल स्टैक्ड था। मुझे संदेह है कि यह एक यूजर इंटरफेस प्रयोग से कट-एंड-पेस्ट क्षति थी जिसे मैंने पूरी तरह से वापस नहीं किया।

वैसे भी, असंबद्ध जुड़वां को हटाने से मेरी समस्या हल हो गई। उसके बाद, मैंने सभी वीसी नामों को हटा दिया क्योंकि वे कोड में संदर्भित नहीं हैं।


3
यह मेरे लिए भी हुआ है, लेकिन मैं अभी भी कई खाली में से एक को भरने के लिए किया थाStoryboard ID
पियरे डी LESPINAY

... तो मेरा मानना ​​है कि @bobnoble be
SwiftArchitect

139

अपने स्टोरीबोर्ड में, प्रत्येक व्यू कंट्रोलर को चुनें (नीचे दी गई छवि में लाल तीर) और स्टोरीबोर्ड आईडी फ़ील्ड (लाल अंडाकार) को देखें। स्टोरीबोर्ड आईडी फ़ील्ड में से कोई भी रिक्त नहीं होना चाहिए। जब तुम एक को खोज लेते हो, वह अपराधी है।

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


6
हाय @bobnoble, आपके उत्तर के लिए धन्यवाद। एक प्रश्न: मुझे हर दृश्य के लिए स्टोरीबोर्ड आईडी क्यों सेट करनी चाहिए? मुझे नहीं लगता कि यह अनिवार्य है, है ना? मुझे पता है कि मुझे एक आईडी सेट करनी है अगर मैं प्रोग्राम को दृश्य रूप से एक्सेस करना चाहता हूं, लेकिन क्या होगा यदि मेरे सभी दृश्य सीगन्स के माध्यम से जुड़े हुए हैं? या यह सिर्फ अच्छा प्रोग्रामिंग अभ्यास है?
वोल्फी

@Wolfy - अच्छी बात है, आपको यह सुनिश्चित करने के लिए प्रत्येक को देखने की जरूरत है कि इसमें या तो एक बहस है या स्टोरीबोर्ड आईडी है।
bobnoble

2
इस समाधान की कोशिश करते हुए, मैंने महसूस किया कि केवल एक विशिष्ट भरने Storyboard IDसे चेतावनी को हटा दिया गया है
पियरे डे लेसपिन

मेरे पास UINavigationControllerकई के लिए था UIViewControllersऔर उन सभी के लिए एक पहचानकर्ता सेट करना था, यहां तक ​​कि मैं कभी भी पहचानकर्ता द्वारा उनमें से एक को फोन नहीं करता। वास्तव में कष्टप्रद, एक बग की तलाश में जहां कोई नहीं है!
एलेक्स Cio

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

30

मुझे सिर्फ एक साधारण सिंगल-सीन स्टोरीबोर्ड के साथ यह सटीक त्रुटि थी, और मुझे इसे ठीक करने के लिए केवल इतना करना था कि स्टोरीबोर्ड में 1 व्यू कंट्रोलर के लिए "इनिशियल व्यू कंट्रोलर" चेकबॉक्स था। मुझे संदेह है कि Xcode इस स्थिति में डिफ़ॉल्ट रूप से आपके लिए इस बॉक्स की जांच करता था, लेकिन अब नहीं है।

सबसे नीचे वाले बॉक्स को चेक करें

                                     

अपने स्टोरीबोर्ड में दृश्य नियंत्रकों में से एक के लिए बॉक्स की जांच करें और आपको अच्छा होना चाहिए।


1
धन्यवाद। वह यह था!
एरिक चेन

20

मुझे डर है कि आपको उनमें से सभी 30 से गुजरना होगा, और यह देखना होगा कि उनके पास स्टोरीबोर्ड आईडी है या उस व्यू कंट्रोलर के पास कोई सेगमेंट है। दोनों में से एक की आवश्यकता है, दोनों भी एक विकल्प है।


5
सभी दृश्य नियंत्रकों के पास अपनी सेगमेंट या आईडी होने के बाद, त्रुटि संदेश अभी भी हो सकता है। इस मामले में, उत्पाद को साफ करें, और यह चला जाएगा।
रेइनहार्ड मोनेर

5
मेरे मामले में त्रुटि को ठीक करने के बाद एक उत्पाद साफ करना त्रुटि संदेश से छुटकारा पाने के लिए पर्याप्त नहीं था। जब मैंने Xcode को फिर से शुरू किया तो यह गायब हो गया। (मैंने इस परियोजना को बंद करने / फिर से खोलने की कोशिश नहीं की। हो सकता है कि उसने भी काम किया हो।)
जूलियनसम

मेरे लिए भी - अंततः आपको त्रुटि संदेश से छुटकारा पाने के लिए xcode को रोकना और पुनः आरंभ करना होगा।
मुसईनेसिस

8

यह समस्या निम्न परिदृश्यों में से एक में हो सकती है:

केस I: यदि स्टोरीबोर्ड में कोई भी दृश्य "isInitialViewController" के रूप में चिह्नित नहीं है ।

फिक्स: रूट व्यू कंट्रोलर को पहचानें और इसे अपने एसबी में "isInitialViewController" के रूप में चिह्नित करें । इस मामले में स्टोरीबोर्ड आईडी अनिवार्य नहीं है।

केस II

ऐसी परिस्थितियाँ हो सकती हैं जहाँ आपको स्टोरीबोर्ड में एक प्रारंभिक दृश्य नियंत्रक की आवश्यकता नहीं है। उदाहरण के लिए: एकाधिक स्टोरीबोर्ड का उपयोग करते समय।

फिक्स: ऐसे मामलों में सुनिश्चित करें कि "स्टोरीबोर्ड आईडी" सही ढंग से दी गई है और आप इस आईडी का उपयोग करके स्टोरीबोर्ड में उपयोग किए जाने वाले पहले दृश्य का उल्लेख करते हैं। उदाहरण के लिए:

UIStoryboard *myStoryBoard = [UIStoryboard storyboardWithName:@"MyStoryBoardName" bundle:nil];
MyViewController *myViewController = (MyViewController *)[myStoryBoard instantiateViewControllerWithIdentifier:@"MyViewControllerId"];

इस मामले में "स्टोरीबोर्ड आईडी" अनिवार्य है।

केस III

आपके पास आपका initialViewController जुड़ा हुआ है। लेकिन फिर भी आपको यह चेतावनी मिलती है। इसका कारण यह है कि स्टोरीबोर्ड के कुछ दृश्य "सेग" के साथ नहीं जुड़े हो सकते हैं और यह भी कि उनके पास "स्टोरीबोर्ड" नहीं है । अपने स्टोरीबोर्ड को स्कैन करें, देखें कि क्या "सेग" की आवश्यकता है। याद आ रही है, तो से कनेक्ट करें। यदि किसी सेगमेंट की आवश्यकता नहीं है, तो सुनिश्चित करें कि आपको "स्टोरीबोर्ड आईडी" देने की आवश्यकता है क्योंकि यह आपके कोड से दृश्य को संदर्भित करने का एकमात्र तरीका है, जैसा कि ऊपर दिए गए उदाहरण कोड में दिखाया गया है।

उम्मीद है की यह मदद करेगा


मामले III - मुझे मदद की। धन्यवाद!
mrGott

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

6

आपको Storyboard IDसभी दृश्यों के लिए सेट करने की आवश्यकता नहीं है याUINavigationController

वैसे मेरे पास लगभग 50-60 दृश्य हैं और मुझे ये चेतावनी सिर्फ इसलिए मिली ताकि मुझे महसूस हो कि केवल नियंत्रक (दृश्य) या नेविगेशनकंट्रोलर जो कि सीग्यू से जुड़ा नहीं है, को सेट करने की आवश्यकता है Storyboard ID

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

आप देख सकते हैं कि ऊपर की छवि UINavigationControllerसेग से जुड़ी नहीं है, यह उस चेतावनी का अपराधी था।

इस चेतावनी को हटाने के लिए बस इसे स्टोरीबोर्ड आईडी दें।


5

मेरी भी यही समस्या थी। मुझे अपने स्टोरीबोर्ड पर एक नौसेना और टैब बार नियंत्रक के साथ बहुत सारे विचार मिले हैं। मेरे लिए यह सिर्फ एक चेतावनी थी कि आपको बता दूं कि कुछ विचार जुड़े नहीं हैं। सुनिश्चित करें कि आपके सभी दृश्य रूट व्यू कंट्रोलर से किसी तरह जुड़े हुए हैं । मैं इस चेतावनी को खत्म करने के लिए इस परियोजना को खरोंच से शुरू कर रहा था और जब एक दृश्य जुड़ा नहीं था तो उसी चेतावनी को देखा।


इससे मुझे मदद मिली। मैं 7.1.1 से अधिक का उपयोग कर रहा हूं। स्विफ्ट 2. आरंभिक स्टोरीबोर्ड I रूट व्यू कंट्रोलर है।
लुकेसीवी

3

आपत्तिजनक दृश्य को खोजने का सबसे सरल तरीका:

समस्या नेविगेटर पर जाएं (बाएं पैनल में, खोज बटन के बगल में), और त्रुटि पर डबल क्लिक करें। एक विंडो पॉपअप होगी जिसमें आपत्तिजनक दृश्य खिड़की के बीच में होगा।

(यह वास्तव में सच है - किसी भी त्रुटि पर डबल क्लिक करने से आम तौर पर पॉपअप में त्रुटि उत्पन्न होगी - एक साफ छोटी चाल!)

साइड नोट: कभी-कभी, XCode गलत तरीके से एक दृश्य के लिए यह त्रुटि देगा जो रूट कंट्रोलर का नेविगेशन नियंत्रक है (जो कि प्रारंभिक दृश्य नियंत्रक है)। सरल फिक्स इस रूट व्यू कंट्रोलर को एक स्टोरीबोर्ड आईडी दे रहा है, संकलन (त्रुटि दूर होनी चाहिए), और फिर स्टोरीबोर्डआईडी (अब कोई त्रुटि नहीं) को हटा रहा है।


धन्यवाद आपका संकेत "साधारण फिक्स इस रूट व्यू कंट्रोलर को एक स्टोरीबोर्ड आईडी" दे रहा है। इसने मेरी समस्या हल कर दी। खैर, मुझे UinavigationController को 'स्टोरीबोर्ड आईडी' देने की आवश्यकता है।
मोहम्मद हैदर

यह मुझे मुख्य मेनू के साथ अनुप्रयोग दृश्य को इंगित करता है। एक Storyboard ID नहीं दे सकते।
डैनियल

2

किस नियंत्रक, या दृश्य को देखने का सबसे आसान तरीका इस समस्या का कारण है:

  • अपने .storyboardप्रोजेक्ट नेविगेटर में Ctrl-क्लिक करके चयन करें Open As > Source Code। यह स्टोरीबोर्ड के अंतर्निहित XML को सामने लाएगा।
  • इस दृश्य में, चेतावनी स्पष्ट रूप से XML में एक पंक्ति से संबंधित होगी जो कि अपमानजनक दृश्य से संबंधित है।

अब, मेरे मामले में, चेतावनी विशेष रूप से कष्टप्रद थी क्योंकि "अपमानजनक दृश्य" में एक पहचानकर्ता और एक बहस था! मैं दृश्य को हटाकर और फिर हटाने को पूर्ववत करके समस्या का समाधान करने में सक्षम था। सुरुचिपूर्ण नहीं, लेकिन काम किया। मैंने ऐसा करने से पहले अपना स्टोरीबोर्ड सहेजा। रेट्रोस्पेक्ट में, मुझे एक कॉपी और diff'डी-आफ्टर-आफ्टर' बनाना चाहिए था ।


2
अजीब बात है, यह लगातार काम नहीं करता है। मेरी बिगड़ी हुई स्थिति में, इसने काम किया। अब मैं इसका परीक्षण कर रहा हूं, और Source Codeदृश्य त्रुटि नहीं दिखा रहा है। तो, लाभ भिन्न हो सकते हैं।
दिमित्री मिंकोवस्की

मुझे इसके साथ दृश्य नियंत्रक नहीं मिला, लेकिन मैंने इसे हटा दिया (XML में, आईडी में काम नहीं किया) और चेतावनी चली गई थी।
डैनियल

2

मेरे लिए, यह एक Storyboard IDया एक के कारण नहीं था Segue। मुझे यह चेतावनी मिल रही थी क्योंकि मैंने सेट नहीं किया था View Controller's Custom Class

चयन View Controllerपर Storyboard, बाद में Utilities Pane, का चयन करें Identity Inspectorआइकन। के तहत Custom Class, देखें कि Classफ़ील्ड के अंदर क्या मूल्य है ।

यदि यह सिर्फ कहता है UIViewController, तो आपको वर्ग नाम में टाइप करना होगा। यह आपकी .hऔर .mफ़ाइलों का नाम होगा जो आपके कस्टम UIViewControllerउपवर्ग को बनाते हैं ।


मैंने अभी इस पर बदलाव किया है। मैंने अपने स्टोरीबोर्ड में ViewController क्लास में गलत ViewController का मिलान किया और Storyboard ID के साथ भी ऐसा ही किया।
विंस ओ'सुल्लिवन

2

मैं आज इस सवाल पर आया था। मैं Xcode 6.3 का उपयोग कर रहा हूं और OP के प्रश्न का उत्तर अभी काफी सरल है:

पहले नियंत्रक बनने की इच्छा रखने वाले दर्शक का चयन करें, गुण निरीक्षक दिखाएँ, और दृश्य नियंत्रक अनुभाग के तहत, सुनिश्चित करें

इनिशियल व्यू कंट्रोलर है

की जाँच कर ली गयी है। देखा!


2

Xcode 7 के साथ इसे आसानी से हैंडल किया जा सकता है। समस्याग्रस्त को खोजने के लिए सभी दृश्यों को मैन्युअल रूप से करने की आवश्यकता नहीं है। सबसे पहले रिपोर्ट नेविगेटर पर जाएं , जहां आप ज्ञात मुद्दों के बारे में अधिक विस्तार से जानकारी प्राप्त कर सकते हैं। समस्या विवरण इस तरह दिख सकता है:

Base.lproj / Main.storyboard: fPh-fe-F5F : चेतावनी: प्रवेश बिंदुओं की कमी के कारण दृश्य अनुपलब्ध है और रन-टाइम एक्सेस के लिए पहचानकर्ता नहीं है -instantiateViewController.ithIdentifier:।

इस जानकारी के साथ, आप ऑब्जेक्ट आईडी की प्रतिलिपि बना सकते हैं, इस मामले में यह fPh-fe-F5F , और इस स्ट्रिंग की घटना के लिए कार्यक्षेत्र खोज रहा है। स्ट्रिंग Main.storyboard फ़ाइल में मिलेगी। खोज परिणाम पर डबल क्लिक करें और इसे चयनित दृश्य के साथ Main.storyboard खोला जाएगा। एक बार जब आप एक समस्याग्रस्त दृश्य जान लेते हैं तो आप स्टोरीबोर्ड आईडी या "इनिशियल व्यू व्यू कंट्रोलर" सेट करके समस्या को आसानी से ठीक कर सकते हैं


1

आप बस एक पहचानकर्ता सेट कर सकते हैं। दाएँ फलक पर विशेषता निरीक्षक पर, आपको "पहचानकर्ता" नामक एक फ़ील्ड मिलेगा। बस वहां कोई भी तार लगाओ, यह काम करना चाहिए

आप नेविगेशन नियंत्रक पर क्लिक कर सकते हैं और विशेषताओं के तहत निरीक्षक बटन पर क्लिक करें "प्रारंभिक दृश्य नियंत्रक", और यह भी काम करना चाहिए।


1
मोहम्मद, जवाब देने के लिए धन्यवाद, लेकिन समस्या यह है: मुझे किस दृश्य पर एक पहचानकर्ता सेट करना चाहिए? मैं उस दृश्य का पता नहीं लगा सकता, जो चेतावनी दे रहा है, यही मुख्य मुद्दा है।
वुल्फि नोव

1

मैं एक ही समस्या का सामना करना पड़ा और स्टोरीबोर्ड आईडी के साथ सभी दृश्य के लिए किसी भी पहचानकर्ता के साथ हल किया गया है; त्रुटि को तुरंत हटा दिया जाएगा

का आनंद लें!!!


0

हो सकता है कि यह XQuery आपको उन गंदे दृश्यों को खोजने में मदद करे

for $i in .//scene/objects/*[1][not(@storyboardIdentifier) or @storyboardIdentifier= '']/@id      (: find every scene that has an empty storyboardIdentifier :)
where count(.//segue[@destination= $i])= 0 and $i!= ./document/@initialViewController             (: filter the results to the scenes that are not destinations of a segue and exclude the initialViewController :) 
return ($i, $i/../@customClass)                                                                   (: return the storyboard-id and the customClass, if any :)

यदि आपने xqilla इंस्टॉल किया है, तो आप क्वेरी को किसी फ़ाइल में सहेजेंगे और उसका उपयोग करेंगे

xqilla <xqueryfile> -i <path to your storyboard>

0

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


0

मुझे यह चेतावनी तब मिली जब मैं स्टोरीबोर्ड में एक UIViewController हूं, जिसमें कुछ भी सेट नहीं है। मैंने स्टोरीबोर्ड आईडी को इस पर सेट करके इस चेतावनी को टाल दिया।


0

मेरे पास एक ही मुद्दा था, लेकिन मुझे एहसास हुआ कि मैं कंटेनर दृश्य का उपयोग कर रहा था और डिफ़ॉल्ट दृश्य नियंत्रक को हटाने के बजाय मैंने इसका segue हटा दिया। दृश्य नियंत्रक स्टोरीबोर्ड में बना रहा और इसलिए चेतावनी थी। तो यह उस मामले में से एक है जहां चेतावनी पॉप अप करती है यदि आपको आवश्यकता न होने पर कंटेनर दृश्य के डिफ़ॉल्ट दृश्य नियंत्रक को ठीक से हटाया नहीं जाता है।


0

मैंने बिना किसी लाभ के ऊपर वर्णित सब कुछ करने की कोशिश की। मेरे पास आईबी में सब कुछ ठीक से जुड़ा हुआ था, ठीक एक UIViewControllerरूट व्यू कंट्रोलर के साथ। मेरे पास कोई पहचानकर्ता नहीं था, लेकिन मैंने अपने सभी नियंत्रकों के साथ उन्हें जोड़ा।

जिस तरह से मैं गायब होने की चेतावनी प्राप्त कर सकता था वह सब कुछ ऊपर (एक कंप्यूटर रिबूट और एक साफ निर्माण सहित) कर रहा था, फिर मेरे प्रोजेक्ट के एक त्रुटि-मुक्त शाखा में वापस स्विच करना और फिर से वापस करना।

यह सुनिश्चित करें कि किस क्रिया ने इसे ठीक किया है, या कौन सी क्रियाओं का संयोजन है, लेकिन यह अपने आप ही स्वच्छ निर्माण नहीं था। यह Main.storyboard का बायप्रोडक्ट हो सकता है जो हमेशा बस खोले जाने पर बदल रहा है, जिसका मतलब है कि मुझे git commit -m "Stupid storyboard"जितनी बार मैं चाहता हूं उससे अधिक बार होना चाहिए।


0

यहाँ मेरे लिए क्या काम किया गया है:

  1. एक पाठ संपादक में स्टोरीबोर्ड खोलें।
  2. संस्करण को 3.0 से 2.0 तक सहेजें और इसे बंद करें।
  3. इसे फिर से विजुअल स्टूडियो में खोलें। यह स्वचालित रूप से दस्तावेज़ को रूपांतरित और खोल देगा।

0

मुझे वही त्रुटि मिली: मेरे लिए त्रुटि यह थी कि मैंने अपनी कहानी बोर्ड में एक दृश्य नियंत्रक नहीं शुरू की थी।

फिक्सिंग ने उस चेतावनी को हटा दिया।


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