在故事板之前,使用 .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 被调用,但这个方法只能被情节提要调用,对吧?那么在使用情节提要时我将如何做类似的事情呢?