使用 xibs,您可以调用不同的初始化程序:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Fetch Note...
// Initialize Edit Note View Controller with the fetched Note
EditNoteViewController *vc = [[EditNoteViewController alloc] initWithNote:note];
// Push View Controller onto Navigation Stack
[self.navigationController pushViewController:vc animated:YES];
}
这让我可以将我的变量(在 EditNoteViewController 中)保密,并且我还能够为某些变量设置默认值,例如
- (id)initWithNote:(Note *)note {
// ....
if (self) {
self.note = note;
self.isEditing = YES;
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
//...
if (self) {
self.isEditing = NO;
}
return self;
}
我现在正在尝试使用 Storyboard:
- 有没有一种在不暴露变量或任何其他实现的情况下从 prepareForSegue 设置变量的好方法?
- 如何设置默认值?
请尽可能明确
最佳答案
你可以使用-initWithCoder:
无论您是从 nib 还是 Storyboard实例化 UIViewController,都会调用此方法。
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self) {
// initializations here
}
return self;
}
关于iphone - 从 xib 移动到 Storyboard时的封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17184061/