iphone - 从 xib 移动到 Storyboard时的封装?

标签 iphone ios objective-c ios6 storyboard

使用 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/

相关文章:

iphone - coredata中使用的undoManager

在 Xcode 中验证构建时的 iPhone 应用程序图标大小

objective-c - 我该如何做NSPredicate代码?

ios - self.fetchedResultsController 抛出 EXC_BAD_ACCESS 而 _fetchedResultsController 工作正常

iOS - 键盘建议气泡错误地隐藏在键盘后面

iphone - AVAssestReader 停止音频回调

javascript - 为动态元素添加事件监听器?

ios - 如何在我的应用程序中检测设备当前是否已连接到车辆 Carplay

iphone - 向 UIDatePicker 添加值

java - 如何在 iOS 中的线程之间传输数据?