iOS 7 - डिफ़ॉल्ट व्यू कंट्रोलर को तत्काल करने में विफल


93

मैं एक नए बनाए गए ऐप में Xcode 5 का उपयोग कर रहा हूं और जब मैं इसे बनाता हूं तो मैं रन बटन के लिए ई पर क्लिक करता हूं, फिर प्रोजेक्ट बन जाता है, लेकिन यह आईओएस सिम्युलेटर में नहीं दिखता है और मुझे निम्न संदेश मिलता है:

 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - 
 perhaps the designated entry point is not set?

मैंने इसके बारे में जाना है और हर कोई बताता है कि ऐसा इसलिए हो रहा है क्योंकि XCode को अभी तक नहीं पता है कि कौन सा व्यू कंट्रोलर शुरुआती है। लेकिन अजीब बात यह है कि मैंने ऐप को एक पेज आधारित (सिंगल-व्यू और टैब्ड ऐप विकल्पों की भी कोशिश की) ऐप के रूप में बनाया और एक्सकोड ने पहले ही इसके लिए स्टोरीबोर्ड को परिभाषित किया था।

इसके अलावा, जब मैं प्रोजेक्ट के मुख्य इंटरफ़ेस विकल्प पर जाता हूं तो स्टोरीबोर्ड (एक्सकोड द्वारा "मेन" नाम दिया गया है) सेट किया गया है, और स्टोरीबोर्ड में, मेरा व्यू कंट्रोलर "इनिशियल व्यू कंट्रोलर" के रूप में सेट किया गया है

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

गलत क्या है?


इसे प्रोग्रामिक रूप से सेट करने का प्रयास करें ...
शम्सुद्दीन टीके

@ रामशाद हाय, मैं iOS के विकास पर एक नौसिखिया की तरह हूं। मैं उसे कैसे कर सकता हूँ?
कृतिग्लोवेसिवेइरा


2
प्रारंभिक दृश्य नियंत्रक होने के लिए दृश्य नियंत्रक सेट करना सुनिश्चित करें।
संदीप

जैसा कि काशिफ अहमद ने बताया, आपको अपनी Info.plist फाइल को सोर्स कोड के रूप में खोलने और <key> UISceneStoryboardFile </ key> string को एडिट करने और अपने नए स्टोरीबोर्ड का नाम प्रदान करने की आवश्यकता है।
बोगदान

जवाबों:


56

तो मेरे साथ भी यही हुआ। मैंने 50 बार चेक किया और मेरे "इनिशियल व्यू कंट्रोलर" को चेक किया गया, मेरा विश्वास करो। यह नीले रंग से हुआ। तो मैंने इसे कैसे ठीक किया?

  1. अपने प्रोजेक्ट में एक नया स्टोरीबोर्ड बनाएं, इसे कुछ नाम दें जैसे Main_iPhoneV2 (या iPadV2 आपके मूल कीबोर्ड पर निर्भर करता है)
  2. टूटी हुई स्टोरीबोर्ड खोलें, सफेद क्षेत्र में कहीं भी क्लिक करें और कमांड-ए दबाएं, फिर कमांड-सी (सभी का चयन करें और कॉपी करें)
  3. अपना नया स्टोरीबोर्ड खोलें और उसी सटीक सेटअप को पेस्ट करने के लिए कमांड-वी दबाएं
  4. अपनी परियोजना सेटिंग्स पर जाएं, अपने "मुख्य इंटरफ़ेस" को नए Main_iPhoneV2 में बदलें (यदि यह आपका iPad है और आप एक सार्वभौमिक ऐप लिख रहे हैं, तो आपको -Info.plist को संपादित करना होगा और मूल्य की तलाश करनी होगी "मुख्य स्टोरीबोर्ड फ़ाइल" आधार नाम (iPad)
  5. रिकॉम्पाइल करें, और अपने बालों को बाहर निकालना बंद करें

3
डेवलपर मूल बातें में सूचीबद्ध चरणों की कोशिश करते समय एक ही समस्या का सामना करना पड़ा। एक नया स्टोरीबोर्ड बनाया गया, नए को प्रारंभिक दृश्य नियंत्रक के रूप में चिह्नित किया और नए को प्रोजेक्ट्स परिनियोजन जानकारी के माध्यम से मुख्य कहानी बोर्ड के रूप में सेट किया। यह जादुई रूप से काम करने लगा। यकीन नहीं तो इसकी कुछ बग Xcode के साथ। डेवलपर.
apple.com/library/ios/referencelibrary/GettingStarted/…

यह तब तक काम नहीं करता था या मुझे लगता है कि काम नहीं करेगा, जब तक कि प्रारंभिक नेविगेशन नियंत्रक "इनिटल व्यू कंट्रोलर" के रूप में सेट नहीं किया जाता है।
सुमित कुमार साहा

मैं यह कोशिश करने जा रहा था। लेकिन फिर मैंने साफ किया और फिर से बनाया और यह काम किया
स्काईवॉकर

305

चेक प्रारंभिक दृश्य नियंत्रक है निरीक्षक गुण में।

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


बेशक यह 'काम करने का तरीका' होना चाहिए। लेकिन मैंने 'बग' का भी सामना किया है, और फिर यह काम नहीं करता है। एक नया बनाना, और अपने सभी सामानों की नकल करने से काम चल गया! मेरे मामले में।
तैस

लेकिन उसका व्यू कंट्रोलर इनिशियल व्यू कंट्रोलर के रूप में पहले से ही सेट है, है ना?
इउरी वासिलेंको

@YuraVasylenko: यह पहले नहीं था, इसलिए मैंने चयनित के रूप में निशान से संकेत दिया है।
अश्विन आजादि

1
बस इसे
जरूरतमंद

40

सबसे पहले राइट हैंड साइड यूटिलिटीज बार में व्यू कंट्रोलर पर क्लिक करें । अगले गुण निरीक्षक का चयन करें और सुनिश्चित करें कि व्यू कंट्रोलर सेक्शन के अंतर्गत 'इनिशियल व्यू कंट्रोलर' चेकबॉक्स चेक किया गया है!


1
यह मेरी समस्या थी। मैंने डिफॉल्ट व्यू कंट्रोलर को डिलीट कर दिया था जो मेरे स्टोरीबोर्ड के पास था और जब मैंने एक और जोड़ा तो मुझे यह जांचना पड़ा।
ऑर्गमीर

17

यदि आपके पास कुछ कोड है तो यह चेतावनी भी दी गई है:

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = myAwesomeRootViewController
    window?.makeKeyAndVisible()

इस मामले में, लक्ष्य सेटिंग्स के पहले पृष्ठ पर जाएं और Main Interfaceखाली पर सेट करें, क्योंकि आपको अपने ऐप के लिए स्टोरीबोर्ड प्रविष्टि की आवश्यकता नहीं है।


14

इंटरफ़ेस बिल्डर का उपयोग करना:

जांचें कि क्या ' प्रारंभिक दृश्य नियंत्रक ' सेट है। आप इसे नीचे दिए गए चरणों का उपयोग करके सेट कर सकते हैं:

  1. अपना व्यू कंट्रोलर चुनें (जिसे प्रारंभिक स्क्रीन के रूप में प्रदर्शित किया जाना है)।
  2. उपयोगिता से निरीक्षक का चयन करें विंडो ।
  3. व्यू कंट्रोलर सेक्शन से ' इनिशियल व्यू कंट्रोलर ' चुनें (यदि नहीं)।

यदि आपने यह कदम उठाया है और तब भी त्रुटि हो रही है uncheck and do it again.

समस्या के समाधान के लिए कदम

प्रोग्राम का उपयोग करना:

उद्देश्य सी :

        self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id>

        self.window.rootViewController = viewController;
        [self.window makeKeyAndVisible];

        return YES;

स्विफ्ट:

        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController

        self.window?.rootViewController = objMainViewController

        self.window?.makeKeyAndVisible()

        return true

3
यदि आप इसे प्रोग्रामेटिक रूप से करते हैं, तो अपने स्टोरीबोर्ड को अपने लक्ष्य के मुख्य इंटरफ़ेस से निकालना सुनिश्चित करें - बस इसे खाली छोड़ दें। साथ ही इसमें जाना चाहिए didFinishLaunchingWithOptions
जॉर्डन एच

@ जोर्डन कैसे स्टोरीबोर्ड को मुख्य इंटरफ़ेस से हटाएंगे?
पास्कल

@Passe टेक्स्ट को सेलेक्ट करें और डिलीट को हिट करें, यह जनरल टैब में है
जॉर्डन H

12

मैंने अपने टैब बार नियंत्रक के साथ यह अनुभव किया है कि वह काली स्क्रीन के साथ सिम्युलेटर में दिखाई नहीं दे रहा है। मैंने अपने ऐप को सिम्युलेटर में प्रदर्शित करने के लिए निम्न कार्य किया।

  1. Main.storyboard पर जाएं।
  2. Is Initial View Controllerगुण निरीक्षक टैब के नीचे की जाँच करें ।

गुण निरीक्षक में प्रारंभिक दृश्य नियंत्रक है।


10

मैन्युअल रूप से विंडो सेट करें,

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if (!application.keyWindow.rootViewController) 
     {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *myViewController= [storyboard instantiateViewControllerWithIdentifier:@"myViewController identifier"];

         application.keyWindow.rootViewController = myViewController;
     }
}

क्या इसके लिए स्टोरीबोर्ड में प्रारंभिक दृश्य-केंद्र को अनचेक करने की आवश्यकता है?
bdv

7

स्टोरीबोर्ड फ़ाइल नाम " Main.storyboard " TO: " XXX.storyboard " को बदलने पर मुझे यह त्रुटि मिलती है "

मेरे लिए समाधान था:

  • उत्पाद-> साफ
  • CHANGE: सहायक फाइलें -> info.plist -> मुख्य स्टोरीबोर्ड फ़ाइल का आधार नाम -> मुख्य TO: XXX

शुभ लाभ



3

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

उपरोक्त सही उत्तर के अलावा, यह भी सुनिश्चित करें कि आपने जनरल में सही मेन इंटरफ़ेस सेट किया है।


3

1 विकल्प

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

इस विशेषता को info.plist फ़ाइल से बदलें

<key>UISceneStoryboardFile</key> <string>Onboarding</string>

ऑनबोर्डिंग आपका स्टोरीबोर्ड नाम होगा

इस राइट-क्लिक करने के लिए info.plist फाइल पर क्लिक करें और सोर्स कोड के रूप में खोलें

दूसरा विकल्प

1- अपने प्रोजेक्ट पर क्लिक करें

2- अपने प्रोजेक्ट को लक्ष्य अनुभाग से चुनें

3- परिनियोजन इंटरफ़ेस अनुभाग पर जाएँ

4- अपने स्टोरीबोर्ड अनुभाग को मुख्य इंटरफ़ेस फ़ील्ड से बदलें

कृपया अपना स्टोरीबोर्ड प्रारंभिक दृश्य नियंत्रक सेट करना याद रखें


1
<कुंजी> UISceneStoryboardFile </ key> चीज़ ने इसे मेरे लिए निर्धारित किया है। धन्यवाद।
बोगदान

2

यदि आपने नया स्टोरीबोर्ड जोड़ा है तो आपको निम्नलिखित बिंदुओं को जांचना होगा।

1) आपकी स्टोरी फाइल में मुख्य स्टोरीबोर्ड फाइल बेस नाम (iPad) या आईफोन का चेक वैल्यू आपके स्टोरीबोर्ड फाइल नाम के साथ मेल खाना चाहिए ( एक्सटेंशन .storyboard नहीं जोड़ें )।

2) स्टोरीबोर्ड में एक व्यू कंट्रोलर होना चाहिए जो इनिशियल व्यू कंट्रोलर के रूप में सेट हो

3) अपने प्रोजेक्ट को साफ करें और उसका निर्माण करें। :)

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


1

यदि आप नियमित रूप से अपना कोड सोर्स कंट्रोल कर रहे हैं, तो इससे आपको एक नया स्टोरीबोर्ड बनाने की परेशानी से बचा जा सकता है और संभवत: आपको और अधिक ...

मैं उस संस्करण के गिट स्रोत कोड की तुलना करके इसे हल करने में सक्षम था जो टूटे हुए के खिलाफ काम करता था। अंतर ने दिखाया कि पहली पंक्ति में प्रारंभिक दृश्य नियंत्रक की आईडी होनी चाहिए, मेरे मामले में, initialViewController = "Q7U-eo-vxw" । मैंने यह सुनिश्चित करने के लिए स्रोत कोड के माध्यम से खोज की कि आईडी मौजूद है। मुझे बस इतना करना था कि सब कुछ वापस आ गया और सब कुछ फिर से काम कर गया!

<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="Q7U-eo-vxw">
    <dependencies>
        <deployment defaultVersion="1296" identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
    </dependencies>
    <scenes>

यहाँ कुछ कदम दिए गए हैं जो आपको समस्या निवारण में मदद कर सकते हैं:

  1. असफल स्टोरीबोर्ड पर राइट क्लिक करें और अंतिम नियंत्रण के बाद से अपने परिवर्तनों को संरक्षित करने के लिए स्रोत नियंत्रण> प्रतिबद्ध ... का उपयोग करें।
  2. अपनी असफल स्टोरीबोर्ड पर राइट क्लिक करने का प्रयास करें और स्टोरीबोर्ड के एक्सएमएल को देखने के लिए "ओपन अस> सोर्स कोड" का उपयोग करें।
  3. में दस्तावेज़ तत्व, विशेषता "नाम के लिए देखो initialViewController "। यदि यह गायब है, तो चिंता न करें, हम इसे ठीक कर देंगे। यदि यह वहां है, तो उस आईडी को डबल क्लिक करें, जिसे इसे सौंपा गया है, इसे कॉपी करने के लिए कमांड-सी, कमांड-एफ कमांड-वी इसे दस्तावेज़ में गहराई से खोजने के लिए। यह नियंत्रक का पहचानकर्ता है जिसे प्रारंभिक दृश्य प्रदान करना चाहिए। यदि यह दस्तावेज़ में परिभाषित नहीं है, तो यह एक समस्या है - आपको इसे दस्तावेज़ टैग से हटा देना चाहिए, मेरे मामले में initialViewController = "Q7U-eo-vxw"
  4. एक्सकोड मेनू आइटम पर जाएं जिसे व्यू कहा जाता है और संस्करण संपादक> शो तुलनात्मक दृश्य चुनें
  5. यह आपके स्थानीय संस्करण को बाईं ओर और दाईं ओर ऐतिहासिक संस्करण दिखाता है। इस कहानी के बोर्ड के कमिट की सूची प्राप्त करने के लिए ऐतिहासिक संस्करण के नीचे की तारीख पर क्लिक करें। वह चुनें जिसे आप जानते हैं कि काम किया है और दस्तावेज़ तत्व की तुलना करें । * InitialViewController की आईडी क्या है ? क्या यह अलग है? यदि हां, तो इसे वापस हाथ से और चलाने का संपादन करें। कार्रवाई में xcode ऐतिहासिक तुलना उपकरण

1

जांचें कि क्या आपके पास AppDelegate में विंडो संस्करण है।

var window: UIWindow? 

और अपनी Info.plist फ़ाइल का स्टोरीबोर्ड भी देखें।

<key>UIMainStoryboardFile</key>
<string>Main</string>

AppDelegate में rootViewController को प्रोग्रामेटिक रूप से सेट करना चेतावनी को ठीक करने वाला नहीं है। आपको यह चुनना चाहिए कि स्टोरीबोर्ड को व्यू कंट्रोलर सेट करने देना है या प्रोग्रामेटिक रूप से करना चाहिए।


1

Xcode 11 और इसके बाद के संस्करण में बनाए गए प्रोजेक्ट, बस प्रोजेक्ट सेटिंग्स से मुख्य इंटरफ़ेस फ़ाइल को बदलना पर्याप्त नहीं होगा।

आपको Info.plist फ़ाइल को मैन्युअल रूप से संपादित करना होगा और स्टोरीबोर्ड नाम को भी सेट करना होगा UISceneStoryboardFile


1

उपरोक्त में से किसी ने भी मेरे लिए समस्या हल नहीं की। मेरे मामले में यह सही अनुप्रयोग दृश्य प्रकट नहीं कर रहा था।

मुझे लॉगिन बदलना पड़ता था जो मेन का उपयोग करता था

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


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