0

在故事板之前,使用 .xib 文件,我使用这段代码在初始化期间进行屏幕调整。

- (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.

现在我正在使用情节提要,并且永远不会调用 initWithNibName 。相反,只有 initWithCoder 被调用,但这个方法只能被情节提要调用,对吧?那么在使用情节提要时我将如何做类似的事情呢?

4

1 回答 1

0

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

这样做的方法是在视图控制器初始化后使用属性来提供正确的值。

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

您可以访问segue.destinationViewController然后使用它来输入值。

于 2013-10-02T12:37:10.273 回答