IBOutlet शून्य है, लेकिन यह स्टोरीबोर्ड, स्विफ्ट से जुड़ा है


102

स्विफ्ट 1.1 और Xcode 6.2 का उपयोग करना।

मेरे पास एक UIStoryboard है जिसमें एक विलक्षण, कस्टम UIViewControllerउपवर्ग है। इस पर, मेरे पास उस कंट्रोलर से स्टोरीबोर्ड पर एक उपवर्ग@IBOutlet के प्रकार का कनेक्शन है । मेरे पास उस दृश्य के साक्षात्कार के लिए भी इसी तरह के आउटलेट हैं। आकृति ए देखें।UIViewUIView

लेकिन रन के समय में, ये गुण शून्य (चित्रा बी) हैं। हालांकि मैंने आश्वासन दिया है कि मैंने इंटरफ़ेस बिल्डर में आउटलेट्स को कनेक्ट किया है।

विचार :

  • क्या यह संभव है कि क्योंकि मैं एक उपवर्ग के एक उपवर्ग का उपयोग कर रहा हूं, तो कुछ आरंभीकरण के साथ खिलवाड़ करता है? मैं किसी भी इनिशियलाइज़र्स को ओवरराइड नहीं कर रहा हूँ
  • awakeFromNib: किसी कारण से नहीं बुलाया जा रहा है
  • हो सकता है कि यह साक्षात्कारों को उप-साक्षात्कार से न जोड़े

चीजें जो मैंने कोशिश की हैं:

  • मिलान @IBOutletऔर स्टोरीबोर्ड आइटम प्रकार बिल्कुल (इसके बजाय UIView)
  • संपत्ति और आउटलेट को हटाना और उन्हें फिर से जोड़ा

चित्र A

चित्र A *

चित्रा बी

चित्रा बी

* अस्पष्ट कोड Figure Aहै:

@IBOutlet private var annotationOptionsView: UIView!
@IBOutlet private var arrivingLeavingSwitch: UISegmentedControl!

धन्यवाद।


क्यों नहीं बदला! सेवा ?

ClearView nil है क्योंकि स्टोरीबोर्ड से लिंक नहीं है (कोड को छेद के बाईं ओर सर्कल देखें, जो इंगित करता है कि लिंक नहीं है), स्क्रीनशॉट में मुझे annotationOptionView की घोषणा नहीं दिखाई दे सकती है।
जेवियर फ्लोरेस फॉन्ट

@JavierFloresFont: clearViewमुझे शून्य होने की उम्मीद है। यह ऐसा कुछ है जो मुझे अभी तक रिफ्लेक्टर करना है। इसके अलावा आंकड़ा ए के लिए फुटनोट देखें। @ शसनसिंह यह होना चाहिए! क्योंकि स्टोरीबोर्ड से कनेक्शन रनटाइम पर सेट किए गए (होने चाहिए) और शून्य नहीं होने चाहिए।
स्टीफन अराम्बासिच

यह व्यू कंट्रोलर कैसे लोड होता है? हमें उस कोड को दिखाएं जो इसके लिए पूछता है, या उस सेगमेंट का वर्णन करता है जो इसे जोड़ता है।
लूट मय

1
इसे सही स्टोरीबोर्ड मिल रहा है: let vc = UIStoryboard(name: "LocationPickerModal", bundle: nil) .instantiateViewControllerWithIdentifier("LocationPickerModalViewController") as LocationPickerModalViewController
स्टीफन अरामासिक

जवाबों:


146

आमतौर पर ऐसा इसलिए होता है क्योंकि आपके दृश्य नियंत्रक ने अभी तक अपने दृश्य पदानुक्रम को लोड नहीं किया है। एक दृश्य नियंत्रक केवल अपने दृश्य पदानुक्रम को लोड करता है जब कोई चीज उसे viewसंदेश भेजती है । सिस्टम ऐसा करता है जब यह वास्तव में दृश्य पदानुक्रम को स्क्रीन पर डालने का समय होता है, जो कि चीजों की तरह होता है prepareForSegue:sender:और viewWillAppear:वापस आ गया है।

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

आप वीसी को यह कहकर पदानुक्रम को देखने के लिए मजबूर कर सकते हैं _ = self.view


4
यह तब होता है जब viewWillAppear:मुझे बुलाया जाता है, पहली बार मैं उस आउटलेट के साथ कुछ भी करता हूं। दृश्य तक पहुँचना मेरे लिए कुछ नहीं करता है। फिर भी शून्य।
स्टेफान अरामासिक

धन्यवाद! यह मेरे लिए भी काम किया। var v = viewcontroller.view; दृश्य पदानुक्रम को लोड करने के लिए मजबूर किया गया। अच्छी छोटी चाल! ;)
यॉर्डी यूटरसप्रोट

@YordiUytersprot आप इस पंक्ति को कहाँ रखेंगे?
Async-

4
ठीक है, अगर आप एक दृश्यमापक को तात्कालिक करते हैं: vc = self.storyboard? CustomVC; देखने दो = vc.view; // अभी, आप कस्टम वीवीसी से IBOutlets का उपयोग कर सकते हैं .. vc.customTextField.text = "लालला"; आशा है कि यह आपकी मदद करता है! :)
योर्डी उइटर्सप्रोट

4
UIViewcontroller.loadViewIfNeeded()यहाँ उपयोग करने के लिए सही विधि है।
orkoden

27

क्या आपने उत्पाद> क्लीन चलाने की कोशिश की है। मेरे लिए एक बहुत ही समान समस्या का समाधान किया।


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

3
मेरे दृश्य के बीच में मेरे दो आउटलेट्स पदानुक्रम शून्य थे .. उत्पाद -> क्लीन ने मेरे लिए काम किया!
रिक्को

1
obj c, सिर्फ मेरे लिए काम की गई परियोजना की सफाई ... एक घंटे से अधिक का समय नहीं दे सकता है और परियोजना को साफ करने के लिए भी नहीं सोचा है: / लेकिन धन्यवाद!
ग्रीनहाउस

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

22

क्या आपने स्टोरीबोर्ड या एनआईबी से अपने व्यू कंट्रोलर को इंस्टेंट किया, या आपने सीधे इनिशियलाइज़र के माध्यम से इसे इंस्टेंट किया?

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


2
मैं एक UIStoryboardउदाहरण बना रहा हूं और instantiateViewControllerWithIdentifierउस पर कॉल कर रहा हूं ।
स्टीफन अराम्बासिच

15

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


2
यह उत्तर है। मैंने इसे काफी समय तक लड़ा, बिल्ड फोल्डर और सब कुछ साफ किया। मेरे मामले में, viewDidLoad()सभी कनेक्शन किए गए थे, लेकिन viewWillAppear()लगभग सभी में nil(कभी-कभी एक या दो अभी भी जुड़े हुए थे)। मैंने सब कुछ करने की कोशिश की और अंत में व्युत्पन्न डेटा फ़ोल्डर को हटा दिया, फिर से बनाया, और सब कुछ ठीक था।
रूटटॉप

6
3 साल बाद भी, Xcode 9.2 में अभी भी वही भगवान लानत है। बहुत बहुत धन्यवाद।
केमल कैन कयाक

1
यहाँ की रिपोर्ट है कि यह अभी भी Xcode 11 में :( मौजूद है
spentag

13

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


तुम सही हो। मैंने स्विफ्ट प्रोग्रामिंग लैंग्वेज में एआरसी काउंटिंग कंटेंट को विस्तार से पढ़ा। मुझे कारण नहीं मिल रहा है, क्यों IBOutlet कमजोर संपत्ति अभी भी शून्य हो सकती है। अंत में, मैं '@IBOutlet स्विफ्ट nil' के लिए गूगल करता हूं और एसओ में अपना जवाब ढूंढता हूं। फिर मैंने लाइन एक्सकोड टेम्प्लेट में 'self.collectionView! .RegisterClass' को viewDidLoad में जोड़ा। फिर, यह काम करता है। तुम मेरी जान बचाओ।
charles.cc.hsu 13

12

यह मेरे लिए हुआ क्योंकि मैं गलती से स्टोरीबोर्ड के माध्यम से तुरंत इसे देखने के बजाय सीधे अपने व्यू कंट्रोलर को देख रहा था। यदि आप सीधे से होकर गुजरते हैं MyViewController()तो आउटलेट कनेक्ट नहीं होंगे।


यदि आप XIB फ़ाइल का उपयोग करते हैं, तो झटपट सीधे अभी भी सफलतापूर्वक काम करता है।
लुआट वउ दीन्ह

11

मेरे मामले में, ऐसा इसलिए हुआ क्योंकि मैंने loadViewअपने ViewController उपवर्ग में इस विधि को ओवरराइड किया , लेकिन जोड़ना भूल गया[super loadView]

-(void)loadView {
// blank
}

जब आप loadViewविधि को ओवरराइड करते हैं , तो यह आपकी ज़िम्मेदारी है कि आप अपने सब-इनविट्यूशन में प्रवेश करें। चूंकि आप इसे ओवरराइड करते हैं, इंटरफ़ेस बिल्डर के विचारों को कोको ऑब्जेक्ट्स में बदलने का मौका नहीं मिलता है और इस प्रकार आउटलेट शून्य रहते हैं।

यदि आप अपने दृश्य नियंत्रक उपवर्ग में loadView को लागू करते हैं, तो यह आपकी जिम्मेदारी बन जाती है कि स्टोरीबोर्ड / xib से यूआई तत्वों को कोड में लोड करें।

या सिर्फ कॉल करें

[super loadView];

ताकि सुपरक्लास को स्टोरीबोर्ड / xib को कोड में लोड करने का मौका मिले।


8

आप controller.viewIBOutlets को प्रारंभ करने के लिए दृश्य को लोड करने के लिए बाध्य करने के लिए कॉल कर सकते हैं , फिर आप मान निर्दिष्ट करने में सक्षम होंगे।

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "identifier") {
        let controller = segue.destinationViewController as! YourController
        let _ = controller.view //force to load the view to initialize the IBOutlets

        controller.your_IBOutlet_property = xxx
        ...
        controller.delegate = self
    }
}

7

यदि आप view controllerप्रोग्राम के माध्यम से तुरंत करते हैं। फिर इसे नीचे की तरह बनाने का प्रयास करें

let initialVC = self.storyboard?.instantiateViewController(withIdentifier: "InitialVC") as! InitialVC

सीधे के बजाय

let initialVC = InitialVC()

इसने मेरे लिए काम किया।


6

मेरे लिए, यह तब हुआ जब मैंने गलती से अपने विचार नियंत्रक की कक्षा घोषित कर दी

class XYZViewController: UINavigationController {
}

(यानी एक UINavigationControllerनहीं के रूप में UIViewController)।

Xcode इस गलती पर इस तरह के रूप ओवरराइड कार्यों को लेने नहीं है, वर्ग का निर्माण ठीक लगता है, और viewDidLoad, viewWillAppearआदि सब काम सही ढंग से। लेकिन दोनों में से कोई भी IBOutletजुड़ा हुआ नहीं है।

के लिए घोषणा को बदलना

class XYZViewController: UIViewController {
}

इसे पूरी तरह से ठीक कर दिया।


5

मैं हाल ही में इस समस्या का सामना करता हूं! यहाँ मेरा विचार है। समस्या आपके बारे में स्टोरीबोर्ड या किसी लिंक समस्या के बारे में नहीं है। यह इस बारे में है कि आप अपना ViewController कैसे आरंभ करते हैं। खासकर जब आप स्विफ्ट का उपयोग कर रहे हैं। (जब आप क्लास फाइल बनाते हैं तो संपादक में मुश्किल से कुछ भी नहीं होता है)

केवल init()सुपर क्लास से उपयोग करके आप कहानी बोर्ड के साथ काम कर सकते हैं। तो आपको जो करने की आवश्यकता है वह व्यूकंट्रोलर के इनिशियलाइज़ेशन को बदल रहा है। इसके let XXViewController = XXViewController() द्वारा प्रतिस्थापित let XXViewController = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("XXViewController") as! XXViewControllerकरने से प्रोग्राम को स्टोरीबोर्ड पर जाने के लिए XXViewController मिल जाता है और IBOutletआपके स्टोरीबोर्ड में सभी आरंभ करता है।

आशा है कि यह मदद ~ जी.एल.


यह मुद्दा नहीं था
स्टेफन अरामबशिक

4

2019, इस पवित्र कार्यक्रम के लिए एक संभावना:

  • मान लें कि आपके पास संभवतः एक कंटेनर दृश्य है जो किसी प्रकार की घड़ी दिखाता है। मतलब आपके पास है

    क्लास क्लॉक: UIViewController

आप वास्तव में ऐप में कई स्थानों पर इसका उपयोग करते हैं

मुख्य स्क्रीन पर, विवरण स्क्रीन पर, संपादन स्क्रीन पर।

आपके पास एक जटिल स्नैपचैट जैसा आधुनिक ऐप है।

वास्तव में, Clockवास्तव में एक ही समय में एक ही स्क्रीन पर एक से अधिक बार लोड किया जा सकता है । (शायद यह कुछ मामलों में छिपा हो।)

आप Clockअपने कई स्टोरीबोर्ड में से एक पर काम करना शुरू करते हैं ।

उस स्टोरीबोर्ड पर आप एक लेबल जोड़ते हैं, NewLabel।

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

आपने निश्चित रूप से आउटलेट को लिंक किया है।

लेकिन ऐप न्यूलेबेल के साथ शून्य के रूप में क्रैश हो जाता है।

Xcode स्पष्ट रूप से आपको बताता है "आप आउटलेट को कनेक्ट करना भूल गए"।

कारण यह है .......... आपके पास घड़ी के केवल एक स्टोरीबोर्ड उपयोग पर "न्यू लबेल" है !

दुर्घटना वास्तव में >>> एक अन्य जगह से है <<<< आप घड़ी का उपयोग कर रहे हैं !!!!

Xcode आपको यह नहीं बताता कि दुर्घटना पूरी तरह से दूसरी जगह से है, कि उस जगह से जहाँ आप काम कर रहे हैं!

दुर्घटना वास्तव में उस जगह से नहीं है जहां आप काम कर रहे हैं - यह किसी अन्य स्टोरीबोर्ड से है, जहां उस स्टोरीबोर्ड पर कोई "NewLabel" आइटम नहीं है !!!

निराशा होती।



2

स्टोरीबोर्ड में आउटलेट्स को त्वरित करने के लिए आपको पहले पदानुक्रम को देखने की आवश्यकता है। इसके लिए, आप मैन्युअल रूप से loadView या loadViewIfNeeded विधियों को कॉल कर सकते हैं।


2

मेरे मामले में, ऐप अचानक से क्रैश होने लगा। डिबगिंग से पता चला है कि सभी आउटलेट nilउस समय भी थे viewDidLoad()

मेरा ऐप अभी भी अधिकांश दृश्य नियंत्रकों के लिए nibs (स्टोरीबोर्ड नहीं) का उपयोग करता है । सब कुछ जगह में था, सभी आउटलेट ठीक से वायर्ड। मैंने डबल-चेक किया।

हम आम तौर पर अपने दृश्य नियंत्रकों को तुरंत बदल देते हैं

let newVC = MYCustomViewController()

... जो किसी कारण से लंबे समय तक काम करने लगता है .xib को व्यू कंट्रोलर क्लास के समान नाम दिया गया है (यह सुनिश्चित नहीं है कि यह कैसे काम करता है, हालांकि। हालांकि, हम इस तरह से ऐसा करने के लिए शून्य तर्क, या ओवरराइडिंग के साथ नहीं बुला रहे हैं। आमतौर पर सुझाव दिया जाता है ...)।init(nibName:bundle:)init()self

इसलिए मैंने स्पष्ट रूप से फोन करने की कोशिश की

 let newVC = MYCustomViewController(nibName: "MYCustomViewController", bundle: .main)

... केवल रनटाइम अपवाद त्रुटि के साथ अभिवादन करने के लिए:

*** बिना किसी अपवाद के SI NSInternalInconsistencyException ’अपवाद के कारण समाप्ति ऐप, कारण: le बंडल में NIB को लोड नहीं किया जा सका: B NSBundle </ Users / nicolasmiari / Library / Developer / CoreSimulator (डिवाइसेस / 3DA3CF21-108D-498F-C64FC9E3C3C3) /Containers/Bundle/Application/C543DDC1-AE86-4D29-988C-9CCE89E23543/MyApp.app> (भरी हुई) '' MYCustomerController '' नाम के साथ

और फिर , मैंने इसे देखा:

.Xib फ़ाइल का "लक्ष्य सदस्यता" चेकबॉक्स अनियंत्रित था।


जब Xcode प्रोजेक्ट फ़ाइल के बारे में लगातार मर्ज विरोधों में से एक को हल करते समय हुआ होगा।

Apple को निश्चित रूप से एक परियोजना फ़ाइल प्रारूप के साथ आने की आवश्यकता है जो अधिक SCM- अनुकूल है।


2

StoryBoards के बिना XIB से ViewControllers बनाने के लिए 100% कार्य समाधान

  1. क्लास कस्टम व्यू कॉन्ट्रोलर बनाएँ: UIViewController
  2. CustomViewControllerView.xib देखें
  3. CustomViewControllerView.xib में इंटरफ़ेस बिल्डर चयन प्लेसहोल्डर्स -> फ़ाइल का स्वामी
  4. "गुण निरीक्षक" में क्लास को CustomViewController के लिए सेट करें
  5. "कनेक्शन्स इंस्पेक्टर" में "देखें" को xib के टॉप-लेवल व्यू में देखें (सुनिश्चित करें कि टॉप-लेवल व्यू का क्लास CustomViewController को इंगित नहीं कर रहा है)
  6. "कनेक्शन्स इंस्पेक्टर" में अन्य आउटलेट (यदि आवश्यक हो / मौजूद हो) कनेक्ट करें
  7. मूल दृश्य नियंत्रक / अनुप्रयोग प्रतिनिधि में CustomViewController का एक उदाहरण बनाएँ

7.1।

// creating instance
let controller = CustomViewController()

7.2।

// connecting view/xib with controller instance
let bundle = Bundle(for: type(of: controller))
bundle.loadNibNamed("CustomViewControllerView", owner: controller, options: nil)

7.3।

// get/set outlets
controller.labelOutlet.text = "title"
controller.imageOutlet.image = UIImage(named: "image1")

शानदार जवाब, धन्यवाद! इसके लायक के लिए, आप कस्टमव्यूकंट्रोलर वर्ग में सीधे init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)कदम 7.2 के साथ ओवरराइड और कॉल कर सकते हैं self
ब्रैंडनस्क्रिप्ट

1

अपने IBOutlet कनेक्शन की जाँच करें यदि यह फ़ाइल के मालिक या दृश्य से जुड़ा है। गलतियाँ हो सकती हैं।


1

अन्य मामला:

आपके आउटलेट तब तक सेट नहीं होंगे जब तक कि व्यू कंट्रोलर का दृश्य वास्तव में त्वरित नहीं हो जाता है, जो कि आपके मामले में शायद initWithNibName: बंडल: - के बाद शीघ्र ही हो रहा है - जो कि वे अभी भी शून्य होंगे। आपके द्वारा किया जाने वाला कोई भी सेटअप जिसमें वे आउटलेट शामिल हैं, जो आपके व्यू कंट्रोलर -व्यूडीडलॉड विधि में हो रहे हैं।


1

मेरे लिए, स्थानीयकृत स्टोरीबोर्ड पर मेरी एक ही त्रुटि थी, एक तत्व कुछ लोकेल में जोड़ा गया था और दूसरे में नहीं था, इसलिए मेरे पास उस तत्व के लिए अशक्त संदर्भ था जब लापता तत्व लोकेल पर स्विच किया गया था, मुझे हटाना पड़ा (अनावश्यक) स्थानीयकरण https://stackoverflow.com/a/42256341/1356559 का उपयोग करके वह स्टोरीबोर्ड ।


1

मेरे लिए, यह दुर्घटनाग्रस्त containerViewथा क्योंकि शून्य था।

यहाँ क्रैश के साथ मेरा कोड है ।

@IBOutlet private var containerView: UIView!  // Connected to Storyboard
override open func loadView() {
    containerView.addSubview(anotherView)
}

लापता की बात को बुला रहा था super.loadView()। इसलिए इसे जोड़ने से मेरे लिए समस्या हल हो गई।

फिक्स्ड कोड :

@IBOutlet private var containerView: UIView!
override open func loadView() {
    super.loadView()
    containerView.addSubview(anotherView)
}

आप loadView () सीधे (फोन कभी नहीं नहीं करना चाहिए developer.apple.com/documentation/uikit/uiviewcontroller/... बजाय), कॉल self.view
Lio

1

जब मैंने पहले ही स्टोरीबोर्ड में पहचानकर्ता को परिभाषित कर लिया था, तो मैंने एक समान मुद्दा तब लिया था जब मैंने पहले रजिस्टर (_: forCellReuseIdentifier :) को कस्टम सेल के लिए जोड़ा था। ViewDidLoad () फ़ंक्शन में यह कोड था। एक बार जब मैंने इसे हटा दिया, तो यह ठीक काम कर गया।


1

फिर भी एक और मामला मैं बस में भाग गया। मैंने UIViewController के लिए अपनी कक्षा का नाम बदल दिया, लेकिन मैं .xib फ़ाइल का नाम बदलना भूल गया जहाँ इंटरफ़ेस बनाया गया था।

एक बार जब मैंने इसे पकड़ा और फ़ाइल नामों को वर्ग नाम को प्रतिबिंबित किया, तो यह सब अच्छा था!

मुझे उम्मीद है कि किसी की मदद करता है।


1

एक और मिल गया ...

यदि आपके पास UITableViewCell के लिए एक कस्टम वर्ग है, लेकिन सेल की शैली में कस्टम निर्दिष्ट करना भूल जाते हैं।


1

यदि दृश्य लोड हो रहा है तो आप मान्य कर सकते हैं।

if isViewLoaded && view.window != nil {
 //self.annotationOptionsView.
}

0
  1. दोनों को चुनें .hऔर .mकंट्रोलर फाइल्स देखें
  2. उन फ़ाइलों का संदर्भ निकालें
  3. फ़ाइलों को अपने प्रोजेक्ट ट्री में पुनः जोड़ें
  4. स्टोरीबोर्ड खोलें, अंततः परियोजना का निर्माण करें

0

अकस्मात मैंने AVPlayerViewControllerइसके बजाय अपने दृश्य नियंत्रक को उप-वर्ग कर दिया UIViewController। इसे UIViewControllerफिर से सामान्य चीजों तक दोहरा कर । यह मदद करनी चाहिए।

किसी भी तरह की सफाई (सामान्य और पूर्ण) नहीं की गई, व्युत्पन्न डेटा फ़ोल्डर्स को हटाकर मेरे लिए काम कर रहे Xcode को छोड़ दिया।


0

मुझे एक वर्ग की नकल करने के बाद (एक xib से जुड़ा हुआ) एक और दृश्यमैंस्टर वर्ग (एक स्टोरीबोर्ड से जुड़ा हुआ) के साथ इसका पुन: उपयोग करने के बाद एक ही समस्या थी। मैं हटाना भूल गया

override var nibName

तथा

override var nibBundle

तरीकों।

उन्हें हटाने के बाद, मेरे आउटलेट ने काम करना शुरू कर दिया।


0

मैं तुम्हें इस्तेमाल करते हैं ViewController! में ViewControllerवर्ग आप चाहिए का उपयोग -viewDidLoad, नहीं -awakeFromNib , -awakeFromNibके लिए उपयोग UIViewवर्ग


0

यह देखने के लिए जांचें कि क्या आपके पास कोई गुम या डिस्कनेक्ट किया गया आउटलेट है।

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


0

यदि आपके पास दो हैं main.storyboardsऔर आप गलत को बदल रहे हैं तो यह हो सकता है। ऐसा तब भी हो सकता है जब आप किसी आउटलेट को अनइंस्टिट्यूट से जोड़ते हैं storyboard

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