2012-02-09 77 views
16

我注意到在使用Storyboard時,ViewController中的「 - (id)init」不會被執行。有沒有其他方法可以替代init,或者是否有強制開啓init的方法。「 - (id)init」在使用故事板時不會觸發ViewController

+2

你想做什麼?還有其他幾種方法:'-initWithNibName:bundle:','-viewDidLoad','-viewDidAppear:'等。根據你想要做什麼,其中一個可能是更好的選擇。 – user1118321 2012-02-09 18:57:22

回答

37

嘗試使用

- (id)initWithCoder:(NSCoder*)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
{ 
     // Do something 
    } 
    return self; 
} 
+1

我的印象是,initWithNibName沒有被調用的原因是因爲你沒有在故事板中使用nib文件。謝謝@NeverBe,initWithCoder也爲我跑。 – Ant 2012-10-03 14:17:45

+0

+1 for @Ant - 答案中的代碼是正確的解決方案,但錯過了解釋 - 然後將其解決。 – 2014-03-13 05:00:34

3

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle被稱爲替代。

如上面的註釋所示,您需要確定是否可能有更適合的方法來覆蓋。請記住,該視圖尚未加載到initWithNibName方法中,因此不要嘗試更改此處的任何內容。