2013-10-02 45 views
0

在故事板和處理.xib文件之前,我使用這段代碼在init中進行屏幕調整。使用故事板時的自定義初始化

- (id)initForNewItem:(BOOL)isNew { 
    self = [super initWithNibName:@"NAME" bundle:nil]; 
    if (self) { 
     if (isNew) { 
      // Place some buttons only when isNew is true 
     } 
    } 

    return self; 
} 

然後我也實現了這個生成異常時initWithNibName直接調用,因爲我想避免的是:

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    @throw [NSException exceptionWithName:@"Wrong initializer" reason:@"Use initForNewItem:" userInfo:nil]; 
    return nil; 
} 

然後另一個視圖控制器可以調用自定義init和屏幕將被設置:

MyViewController *myViewController = [[MyViewController alloc] initForNewItem:YES]; // Or NO ofcourse depending on the situation. 

現在我使用的故事板和initWithNibName永遠不會被調用。相反,只有initWithCoder被調用,但此方法只能由故事板調用嗎?那麼如何在使用Storyboard時做類似的事情?

回答

0

你不會用故事板做到這一點。

執行此操作的方法是在視圖控制器初始化後使用屬性賦予正確的值。

這在- (void)prepareForSegue:(UIStoryBoardSegue *)segue sender:(id)sender中完成。

您可以訪問segue.destinationViewController,然後使用它來輸入值。

相關問題