2009-06-03 10 views
6

में नहीं कहा जाता है मेरे पास एक व्यू कंट्रोलर है जो initWithNibName के माध्यम से बनाया गया है, और मुझे अभी पता चला है कि FakeNib को नहीं कहा जाता है। जागृत है FromNib केवल तभी बुलाया जाता है जब दृश्य नियंत्रक निब से अनारक्षित होता है? (यानी, initWithCoder कहा जाता है)awakeFromNib को मेरे व्यू कंट्रोलर

उत्तर

4

UIViewController अपने दृश्य को आलसी लोड करता है, केवल तभी प्रदर्शित होता है जब इसे प्रदर्शित करने के लिए आवश्यक हो। यह प्रोग्राम-व्यू दोनों के लिए -loadView या nib से अनारक्षित करने का उपयोग करके दृश्य बनाता है।

आप UIViewController की दृश्य संपत्ति को संदर्भित करके दृश्य को लोड करने का कारण बन सकते हैं।

+0

"दृश्य संपत्ति संदर्भ" टिप के लिए धन्यवाद, यह वही था जो मैं ढूंढ रहा था। – Cyrille

17

मुझे लगता है कि आप जो खोज रहे हैं वह viewDidLoad है। awakeFromNib केवल वस्तुओं है कि निब से लोड किए गए हैं पर कहा जाता है। नियंत्रक को viewDidLoad: प्राप्त होता है। जब से तुम initWithNibName:bundle: कॉल कर रहे हैं, यह वास्तव में निब से बिना संग्रहित है!

+1

मैं तथ्य यह है कि viewDidLoad बुलाया जाएगा के बारे में पता है, लेकिन यकीन है कि क्यों awakeFromNib, नहीं था, क्योंकि दृश्य नियंत्रक निब की एक फ़ाइल मालिक है, इसलिए यह संग्रह से निकाला गया हो जाएगा और उसके IBOutlet और IBAction को झुका, या नहीं था तो मैंने सोचा। नहीं एक वास्तविक उदाहरण - – Boon

+1

फ़ाइल मालिक UIViewController के लिए एक प्रॉक्सी है। फ़ाइल स्वामी - मुमकिन है दृश्य नियंत्रक निब और उसके बाद के दायरे से बाहर instantiated है रिश्तों प्रॉक्सी वस्तु पर निर्दिष्ट के अनुसार 'ऊपर वायर्ड'। – teabot

2

awakeFromNib को प्लेसहोल्डर ऑब्जेक्ट्स जैसे फ़ाइल के स्वामी और आईओएस में फर्स्ट रेस्पॉन्डर के लिए नहीं कहा जाता है। Object Loading Process Docs

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