我的基于tabBarController的应用程序有几个选项卡。每个都有一个自定义的viewController类,唯一的区别是实例的初始化方式。有没有办法让界面构建器发送不同的标签自定义init参数?

目前我正在viewWillAppear中进行初始化,但由于一系列原因,在IB而不是代码中进行初始化是有意义的。

有什么建议吗?

感谢, 凯尔索

有帮助吗?

解决方案

Interface Builder会在您执行程序时创建未归档的对象存档。你无法真正告诉IB调用特定的方法。

如果需要在 viewWillAppear:之前进行初始化,可以在 awakeFromNib 中进行初始化,保证在加载所有对象和所有出口后调用与他们的目标有关。

如果您想更早地进行初始化,可以通过覆盖 initWithCoder:(参见 NSCoding 协议以获取文档)来实现。我不知道它是否记录在任何地方,但这是为从存档中解码的对象初始化的。

在上述所有情况中,您将无法接收参数,但在代码中,您应该能够通过明智地使用全局变量来访问所需的任何内容。您还可以使用 [[UIApplication sharedApplication] delegate] 来访问您的应用程序委托对象。

其他提示

我认为在加载nib时,没有任何方法可以更改IB运行时调用的方法。如果您描述了您要完成的任务(即为什么在viewDidAppear中进行设置不适合您),您可能会建议更好的方法来处理初始化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top