2012-01-07 7 views

उत्तर

127

इस्तेमाल किया प्रारंभकर्ता initWithCoder:

- (id)initWithCoder:(NSCoder *)decoder 

है तो फिर बाद में आप भी एक awakeFromNib संदेश प्राप्त होगा है।

+3

क्या मैं अकेला हूं जो इसे अजीब लगता है कि डिफ़ॉल्ट (?) Init initWithCoder से नहीं कहा जाता है? – brianestey

+2

नहीं, यह नामित init नहीं है, inits को (आमतौर पर) अधिक पैरामीटर के साथ एक और init कॉल करना चाहिए, जो तब [सुपर init] कॉल करेंगे। इस मामले में ऐसा लगता है कि initWithCoder नामित init – MrJD

+7

initWithCoder है: एनएससीओडी लागू करने वाले किसी भी वर्ग का नामित प्रारंभकर्ता है। –

5

मेरा मानना ​​है कि यह awakeFromNib

+0

awakeFromNib की तरह वहाँ क्या करना है के बाद से हमारे 'UIViewControllers' भी कहा जाता हो जाता है चलो आपकी .storyboard फ़ाइल में "डिब्बाबंद" हो रहे हैं ("पुरानी" nibs के समतुल्य) – Besi

+0

'जागने FromNib' और' init * 'विधियों के बीच अंतर (जो महत्वपूर्ण हो सकता है) यह है कि वे एक उदाहरण लौटाते हैं,' जागृत FromNib' ऐसा नहीं करता। – Matthew

0

यह - (id)initWithCoder:(NSCoder *)decoder

तो आप एक कस्टम init क्या करना है, तो है, चलो एक कस्टम पेजर नियंत्रक का उपयोग कर कहते हैं कि तुम

- (id)initWithCoder:(NSCoder *)decoder { 

     self = [super initWithCoder:decoder]; 
     return [self initWithViewControllers:@[self.playerViewController, self.categoriesViewController] 
        andTitles:@[@"Player",@"Categories"]]; 
    } 
संबंधित मुद्दे