IB中的tabBar viewControllers:发送自定义init?

时间:2009-03-06 07:36:26

标签: iphone cocoa-touch interface-builder uitabbarcontroller

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

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

有什么建议吗?

感谢, 凯尔索

2 个答案:

答案 0 :(得分:3)

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

如果您需要在调用viewWillAppear:之前进行初始化,则可以在awakeFromNib中执行此操作,保证在加载所有对象并且所有插件已连接到其目标后调用。

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

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

答案 1 :(得分:0)

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