2011-03-28 7 views
11

सेट नहीं किया गया था यह अन्य समान प्रश्नों की भीड़ जैसी स्थिति नहीं है।'एनएसआईएनएनल इन्कॉन्सिस्टेंसी एक्सेप्शन', कारण: '- [UIViewController _loadViewFromNibNamed: बंडल:] गेम व्यू निब लोड किया गया है लेकिन व्यू आउटलेट

* न आया हुआ अपवाद 'NSInternalInconsistencyException', कारण की वजह से एप्लिकेशन समाप्त: '- [UIViewController _loadViewFromNibNamed: बंडल:] GameView निब भरी हुई लेकिन दृश्य आउटलेट सेट नहीं था।'

आप सोच सकते हैं "जैसा कि यह कहता है, फ़ाइल के मालिक को आईबी में दृश्य में कनेक्ट करें!"। लेकिन बात यह है कि, मेरे पास प्रोजेक्ट निर्देशिका में या यहां तक ​​कि प्रोजेक्ट निर्देशिका में गेमव्यू.एक्सिब भी नहीं है।

मेरे पास "GameViewController.m" है और मेरी परियोजना में "GameViewController.xib" से मेल खाता है। उस गेम व्यू कंट्रोलर का उपयोग करना इस त्रुटि को लाता है, लेकिन मुझे समझ में नहीं आता कि यह "GameView.xib" को आजमाने और लोड करने का विचार कहां प्राप्त करता है। इसे इसके बजाय "GameViewController.xib" का उपयोग नहीं करना चाहिए?


तो मैं अपने प्रोजेक्ट निर्देशिका grep, मैं इसे "UserInterfaceState.xcuserstate" से संदर्भित दिख रहा है।

<string>file://localhost/Users/bemmu/Dropbox/b2/iphone/ValleyStory/ValleyStory/GameView.xib</string> 

यह उल्लिखित फ़ाइल मौजूद नहीं है। हो सकता है कि मेरे पास उस नाम से पहले एक फ़ाइल हो और उसका नाम बदल दिया/हटा दिया गया हो, लेकिन इसे कहीं भी संदर्भित नहीं किया जा रहा है जिसे मैं आईबी में देख सकता हूं।

क्या मैंने एक्सकोड को भ्रमित करने का प्रबंधन किया था?

उत्तर

5

किसी भी निब फाइलों का उपयोग करें जो आप उपयोग कर रहे हैं (जैसे MainWindow.xib)। यदि आप एक निब से GameViewController लोड कर रहे हैं, तो उस फ़ाइल को जांचें जो इसे लोड कर रहा है (इंस्पेक्टर में जानकारी टैब के नीचे)। सुनिश्चित करें कि यह "गेम व्यू कंट्रोलर" पर सेट है और "गेम व्यू" नहीं है।

+0

जब मैं मैन्युअल रूप से सेट "निब नाम" हटाएँ GameViewController मैं MainWindow.xib अंदर रखा था के लिए (यह पहले खाली था), यह काम करना प्रारम्भ कर दिया। आपका बहुत बहुत धन्यवाद! मैंने इसे ठीक करने की कोशिश करने में घंटों बिताए। यह अभी भी एक रहस्य है कि यह गलत जगह को गलत जगह पर लोड करने का प्रयास क्यों करेगा, लेकिन कम से कम यह काम करता है। – Bemmu

+0

खुशी मैं मदद कर सकता था! –

0

यह देखते हुए कि आपने इसे पहले संदर्भित किया था, ऐसा लगता है कि एक्सकोड ने यह नहीं देखा है कि यह अब मौजूद नहीं है। उत्पाद मेनू से "साफ करें" का चयन करें और फिर "बिल्ड करें" उम्मीद है कि यह आपके लिए पुराना संदर्भ पुराना होगा।

0

चेहरा एक ही समस्या, कोड में दृश्य का नाम बदलना पड़ा:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"WrongViewName" bundle:nil]; 

करने के लिए

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"RightViewName" bundle:nil]; 
19

मेरे समाधान एक छोटे से अलग था। इंटरफ़ेस बिल्डर

  • फ़ाइल का चयन मालिक बाईं
  • ओपन पर फ़ाइल के मालिक कनेक्शन निरीक्षक
  • में xib पर

    1. क्लिक करें, तो दृश्य संपत्ति अभी तक तार, करने के लिए नियंत्रण खींचें यह नहीं है आइकन देखें (फ़ाइल के मालिक और पहले उत्तरदाता आइकन के नीचे)।
  • +0

    इसने मेरा मुद्दा हल किया –

    +0

    चौथा बिंदु मुख्य –

    0

    मेरे पास कई विचार थे, और दुर्घटना से (मुझे नहीं पता कि यह कैसे खुश हुआ) लेकिन मेरे पृष्ठभूमि दृश्य में फ़ाइल स्वामी नहीं था, इसलिए किसी और के लिए जो भविष्य में यह समस्या है, सुनिश्चित करें आपके सभी विचारों में फ़ाइल स्वामी है।

    0

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

    2

    मैंने हाल ही में इस मुद्दे को हल किया है। सुनिश्चित करें कि यहां दिए गए चरणों का पालन करने से पहले आप अपनी परियोजना का बैकअप लें (बस मामले में)। ये कदम मेरी समस्या हल हो जाती

    1. .xcodeproj/project.xcworkspace/xcuserdata/<username>.xcuserdata पर UserInterfaceState.xcuserstate स्थित करने के लिए Xcode
    2. नेविगेट से बाहर निकलें और फ़ाइल को नष्ट।
    3. एक्सकोड दोबारा खोलें। एक्सकोड एक नया UserInterfaceState.xcuserstate तैयार करेगा जो साफ़ होगा। जब करने के लिए initWithNibNamed:bundle: चेक शून्य से पारित कर दिया
    4. नियंत्रक के रूप में एक ही नाम के साथ एक निब के लिए
    +0

    यह मेरे लिए काम करता है! धन्यवाद!! – Wirsing

    0

    UIViewController खोजें कि फ़ाइल का नाम है कि आप प्रारंभकर्ता के पास सही है और मौजूद है!

    उदाहरण के लिए:।। (जैसे [[CCVisitorsController alloc] initWithNibName:nil bundle:nil] तो UIViewController डिफ़ॉल्ट के रूप में नाम CCVisitorsController साथ निब लोड करने के लिए कि फ़ाइल मौजूद नहीं है, तो त्रुटि आप का उल्लेख फेंक दिया जाता है की कोशिश करता है

    1

    मेरे मामले में, मैं था सभी में एक xib का उपयोग नहीं। मैं चरण बिल्ड> संकलित स्रोतों से मीटर फ़ाइल निकालने की जरूरत है और उसे वापस जोड़ लिया।

    0

    मैं इस समस्या थी क्योंकि मैं

      0 में कुछ बुरा कर रहा था
    • (आईडी) initWithCoder: (NSCoder *) सांकेतिक शब्दों में बदलनेवाला

    जो निब भार।

    3

    मुझे यह समस्या भी थी, लेकिन इसे एक अलग तरीके से हल करना पड़ा। असल में, मेरे पास व्यू कंट्रोलर नाम मेनव्यू कंट्रोलर है, जिसमें एक xib नाम है MainViewController.xib। इस निब में यह देखने के लिए फ़ाइल मालिक को सेट संपत्ति है जो MainViewController था।

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

    तो बुनियादी तौर पर, मैं MainViewController वस्तु के लिए निब के रूप में लोड करने के लिए MainViewController.xib चाहते थे, और MainViewController अंदर, कुछ बाद में किसी समय, मैं MainView.xib द्वारा निर्दिष्ट आंतरिक दृश्य जोड़ना होगा।

    एक जोड़े मुद्दों के उठने:

    1.) मैं एप्पल डॉक्स में पाया गया कि जब स्टोरीबोर्ड या निब के माध्यम से एक दृश्य नियंत्रक लोड हो रहा है:

    "दृश्य नियंत्रक वर्ग के नाम शब्द के साथ समाप्त होता है "नियंत्रक", MyViewController में के रूप में, यह एक निब फ़ाइल जिसका नाम शब्द "नियंत्रक" बिना वर्ग के नाम से मेल खाता है, तो लग रहा है MyView.nib में के रूप में।

    यह एक निब फ़ाइल जिसका नाम के लिए लग रहा है नाम से मेल खाता देखें नियंत्रक वर्ग। उदाहरण के लिए, यदि वर्ग का नाम MyViewController है, यह एक MyViewController.nib फ़ाइल ढूंढता है।"

    इसलिए, आप अगर आप भी एक निब MainViewController कहा जाता है और MainViewController.xib MainViewController के लिए प्राथमिक निब होना चाहते है एक निब MainView.xib बुलाया

    2. नहीं हो सकता।) यहां तक ​​कि अगर आप हटाना MainView.xib या किसी अन्य चीज़ का नाम बदलें (इस मामले में MainInternalView.xib), आपको अपने आईओएस सिम्युलेटर को हटा/साफ करना होगा क्योंकि पुरानी निब फ़ाइल (MainView.xib) अभी भी एप्लिकेशन में रहेगी। यह पूरे ओवरराइट नहीं करता है जब आप अपने एप्लिकेशन को पुनर्निर्माण/पुन: चालू करते हैं तो एप्लिकेशन पैकेज।

    यदि आप अपनी सामग्री सेटिंग्स को रीसेट नहीं करना चाहते हैं (शायद आपके पास कुछ डेटा वाई है कहां संरक्षित करना चाहते हैं), फिर अपने आईओएस सिम्युलेटर फ़ोल्डर में अपने एप्लिकेशन पर राइट-क्लिक करें, पैकेज सामग्री दिखाएं, MainView.nib ढूंढें, और इसे हटा दें। जब आप पुनर्निर्माण करते हैं तो एक्सकोड स्वचालित रूप से आपके लिए ऐसा नहीं करेगा, इसलिए हमें पुराने निब को मैन्युअल रूप से हटाने की आवश्यकता है।

    कुल मिलाकर, मेनव्यू कंट्रोलर और मेनव्यू नामक निब्स न बनाएं, यानी उसी उपसर्ग के साथ। MainVternalView.xib जैसे कुछ और मेनव्यू.एक्सिब पर कॉल करें।

    0

    मेरे मामले में यह त्रुटि गूंगा गलती से उत्पादन किया गया था - मैं _view दृश्य dumb mistake

    संबंधित मुद्दे