Using initWithNibName changes absolutely nothing पोस्ट में, वह एक ही दृश्य निब परिभाषा के दो उपयोग दिखाता है, पहले मामले में, वह बस एलोक/इनिट और दूसरा कॉल करता है, वह initWithNibName निर्दिष्ट करता है।मुझे कॉल करने की आवश्यकता कब है - [UIViewController initWithNibName: बंडल:]?
तो, जबकि यह हमेशा काम करता है:
MyViewController *vctrlr = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; [self.navigationController pushViewController:vctrlr animated:YES]; [vctrlr release];
सभी देखें नियंत्रकों मैं विरासत में मिला है उसके लिए निम्नलिखित काम करता है, लेकिन मेरा नहीं!
TheirViewController *vctrlr = [[TheirViewController alloc] init]; [self.navigationController pushViewController:vctrlr animated:YES]; [vctrlr release];
नए आईओएस प्रोग्रामिंग करने के लिए, मैं कुछ कोड विरासत में मिला। आईबी में सभी व्यू कंट्रोलर के विचार परिभाषित किए गए हैं, लेकिन उन दृश्य नियंत्रकों के असंगत आवंटन/इनिट निर्माण थे। मैंने एक नया व्यू कंट्रोलर और एक्सआईबी बनाया है, लेकिन यह तब तक काम नहीं करता जब तक कि मैं initWithNibName का उपयोग नहीं करता (जब मैं व्यू कंट्रोलर को एनवी कंट्रोलर पर दबाता हूं तो क्रैश हो जाता है)। मैं नहीं बता सकता कि मेरा व्यू कंट्रोलर दूसरों की तुलना में अलग कैसे है ... कोई संकेत? मैं ऐप में अन्य सभी व्यू कंट्रोलर के लिए initNibName उपयोग को हटाने में सक्षम था।
आम तौर पर यह के रूप में यह वास्तव में ViewController से देखने बाहर सार निब नाम निर्दिष्ट करने के लिए अच्छा है। उदाहरण के लिए, यदि आपके पास एक नियंत्रक है जिसमें कुछ स्थितियों के आधार पर थोड़ा अलग विचार हैं, तो आप अपने विचारों के रूप में अलग-अलग निब्स में लोड कर सकते हैं। – Rexeisen
क्या आपने 'vctrlr' में 'loadView' विधि लागू की है? –
'लोड व्यू' को किसी भी मामले में लागू नहीं किया गया है। – wrlee