2012-02-20 17 views
6

XCode-उत्पन्न दृश्य नियंत्रकों पर डिफ़ॉल्ट init विधि हस्ताक्षर है:nibNameOrNil वास्तव में क्या मतलब है?

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ } 

मैं इन आपूर्ति दोनों मूल्यों, बस निब नाम (शून्य के रूप में बंडल के साथ) के साथ प्रारंभ देखा है, या बस दोनों के रूप में nil। सब काम करने लगते हैं।

UIViewController वास्तव में self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; को कैसे संभालता है? क्या दोनों मूल्यों के लिए nil में बस पास करने का कोई नुकसान है?

उत्तर

9

यदि आप nil को nibName के रूप में पास करते हैं, तो विधि आपके व्यू कंट्रोलर के समान फ़ाइल नाम के साथ एक निब की तलाश करेगी।

उदाहरण के लिए, यदि आपके पास MyViewController नामक व्यू कंट्रोलर है तो यह MyViewController.xib निब फ़ाइल की तलाश करेगा।

यदि कोई निब नहीं मिला है, तो आपको नियंत्रक के व्यू आउटलेट में UIView बनाने और असाइन करने के लिए loadView विधि को ओवरराइड करना होगा।

nibName:

- (void)loadView 
{ 
    UIView *theView = [[UIView alloc] ... 
    // Setup the main view 
    self.view = theView; 
} 
+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद! – Tim

1
docs से

आप nibName पैरामीटर के लिए नहीं के बराबर निर्दिष्ट करें और आप loadView विधि ओवरराइड नहीं करते हैं, एक निब फ़ाइल के लिए देखने नियंत्रक खोजें अन्य का उपयोग करते हुए माध्यम। निबनाम देखें।

nibBundle:

बंडल जिसमें निब फ़ाइल के लिए खोज करने के लिए। यह विधि संसाधन निर्देशिका द्वारा पहले बंडल की भाषा-विशिष्ट प्रोजेक्ट निर्देशिकाओं में nib फ़ाइल की तलाश करती है। यदि शून्य है, तो यह विधि मुख्य बंडल में nib फ़ाइल की तलाश करती है।

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