我的基于 tabBarController 的应用程序有几个选项卡。每个都有一个自定义的 viewController 类,唯一的区别是实例的初始化方式。有没有办法让界面构建器发送不同的选项卡自定义初始化参数?
目前我正在 viewWillAppear 中进行初始化,但出于多种原因,在 IB 中而不是在代码中进行初始化是有意义的。
有什么建议么?
谢谢,凯尔索
我的基于 tabBarController 的应用程序有几个选项卡。每个都有一个自定义的 viewController 类,唯一的区别是实例的初始化方式。有没有办法让界面构建器发送不同的选项卡自定义初始化参数?
目前我正在 viewWillAppear 中进行初始化,但出于多种原因,在 IB 中而不是在代码中进行初始化是有意义的。
有什么建议么?
谢谢,凯尔索
Interface Builder 创建一个对象存档,当您执行程序时该存档未存档。你不能真正告诉 IB 调用特定的方法。
如果您需要在viewWillAppear:
调用之前进行初始化,您可以在 中进行awakeFromNib
,保证在所有对象都已加载并且所有出口都已连接到它们的目标后调用。
如果您想更早地进行初始化,可以通过覆盖来实现initWithCoder:
(请参阅NSCoding
协议以获取文档)。我不知道它是否记录在任何地方,但这是为从档案中解码的对象指定的初始化。
在上述所有情况下,您将无法接收参数,但在代码中,您应该能够通过明智地使用全局变量来访问您需要的任何内容。您还可以使用[[UIApplication sharedApplication] delegate]
它来访问您的应用程序委托对象。
我不认为有任何方法可以更改加载 nib 时 IB 运行时调用的方法。如果您描述了您想要完成的工作(即为什么在 viewDidAppear 中进行设置对您不起作用),您可能会得到有关处理初始化的更好方法的建议。