我的基于 tabBarController 的应用程序有多个选项卡。每个都有一个自定义 viewController 类,唯一的区别是实例的初始化方式。有没有办法让界面生成器发送不同的选项卡自定义初始化参数?
目前我正在 viewWillAppear 中进行初始化,但出于多种原因,在 IB 中而不是在代码中进行初始化是有意义的。
有什么建议吗?
谢谢, 凯尔索
最佳答案
Interface Builder 创建一个对象存档,当程序执行时该存档将取消存档。您无法真正告诉 IB 调用特定方法。
如果需要在调用viewWillAppear:
之前进行初始化,可以在awakeFromNib
中进行初始化,保证在加载所有对象和所有outlet之后调用已连接到他们的目标。
如果您想更早地进行初始化,可以通过重写 initWithCoder:
来实现(请参阅 NSCoding
协议(protocol)以获取文档)。我不知道它是否在任何地方都有记录,但这是为从存档中解码的对象指定的初始化。
在上述所有内容中,您将无法接收参数,但在代码中,您应该能够通过明智地使用全局变量来访问您需要的任何内容。您还可以使用[[UIApplication sharedApplication] delegate]
来访问您的应用程序委托(delegate)对象。
关于iphone - IB 中的 tabBar viewControllers : send custom init?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617973/