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