使用故事板时自定义初始化

时间:2013-10-02 12:03:37

标签: objective-c storyboard initialization nib

在故事板和使用.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;
}

然后另一个viewcontroller可以调用自定义init并设置屏幕:

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

现在我正在使用storyboard,从不调用initWithNibName。而只调用initWithCoder,但这个方法只能由故事板调用吗?那么在使用故事板时我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

你不会用故事板来做这件事。

执行此操作的方法是在初始化视图控制器后使用属性来提供正确的值。

这是在- (void)prepareForSegue:(UIStoryBoardSegue *)segue sender:(id)sender

中完成的

您可以访问segue.destinationViewController,然后使用此功能将值放入。