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