2009-11-09 15 views
15

मैंने देखा है वहाँ निब/xib फ़ाइलें लोड करने के लिए दो अलग अलग तरीकों हैं कि:initWithNibName वी.एस. NSBundle के loadNibNamed

  1. UIView के initWithNibName:bundle: विधि
  2. NSBundle के loadNibNamed:owner:options: विधि के माध्यम से।

क्या कोई इन दोनों के बीच मतभेदों को समझा सकता है और जब किसी दूसरे पर और किस परिस्थितियों में इसका उपयोग करना उचित होता है?

उदाहरण के लिए, यदि मैं तालिका में एक निब फ़ाइल से कस्टम तालिका अनुभाग शीर्षलेख दृश्य लोड कर रहा हूं दृश्य: viewForHeaderInSection: विधि, मैं किस का उपयोग करूंगा?

या, यदि मैं एक निब फ़ाइल से एक कस्टम टेबल व्यू सेल लोड कर रहा था, तो मैं किस का उपयोग करूंगा?

उत्तर

10

NSBundle की विधियां अनियंत्रित एनआईबी के लिए उपयोग करने के लिए जेनेरिक एपीआई हैं। वे वास्तविक काम करते हैं (साथ में NSNib)।

UIViewControllerinitWithNibName:bundle: दूसरी तरफ एक व्यू कंट्रोलर शुरू करने का एक तरीका है जो (शायद) एक दृश्य से अपना दृश्य लोड कर सकता है। विधि स्वयं निब लोड नहीं करती है लेकिन सिर्फ नाम का ध्यान रखती है। जब दृश्य का अनुरोध किया जाता है तो नियंत्रक नीच को आलसी लोड करता है।

मुझे UIView में किसी भी निब लोडिंग के बारे में पता नहीं है।

7

आपके शीर्षक के दृश्य नियंत्रक निब फ़ाइल में किसी भी क्षेत्र के लिए IBOutlets हैं, तो यह लोड निब बजाय initWithNib बुलाने की फाइल करने के लिए बेहतर होगा। हेडर फ़ाइल के दृश्य नियंत्रक में निम्न के रूप में दीक्षा कथन संशोधित करें। डिफ़ॉल्ट कथन टिप्पणी की गई है।
ऐसा करके आप आईबीआउटलेट का उपयोग करके निब फ़ाइल में फ़ील्ड तक पहुंच पाएंगे।

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    // Custom initialization. 
if ([[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil]) { 

} 

return self; 

}

+2

मैं अगर मैं कर सकता आप वोट चाहते हैं 100। आपके जवाब ने वास्तव में मेरी मदद की - 2 समस्याओं का समाधान किया। मुझे विकल्पों के साथ एनएस डिक्शनरी भी शामिल करने की आवश्यकता है। धन्यवाद!!!! –

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