我需要在我的iPhone应用程序中添加一些自定义逻辑,以便根据您正在运行的iOS版本,选择不同的XIB文件(即iPhone或iPad将显示不同的XIB文件)。
我从第一天开始就构建了整个iPhone应用程序,它很好,在每个选项卡中都使用了一个选项卡和标准导航控制器。
因此,我实现了:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
方法,只会发现它没有被调用。(我在其中有一个断点和日志语句,没有任何东西被击中)。
有人知道为什么会这样吗?或如何实现这个功能?
我在某个地方读到过,只有在调用initWithNibName时才调用它,也就是说,当您以编程方式构造视图层次结构时,这是真的吗?
发布于 2010-09-07 23:25:24
如果在将其添加到导航控制器之前没有这样做:
SomeViewController *someViewController = [[SomeViewController alloc] initWithNibName:...];那就很有可能你超越了错误的方法。
如果您的视图控制器位于一个nib文件中,比如您的导航控制器的nib文件,它将作为一个新的视图控制器对象从nib文件中解除存档,而不是使用它自己的nib文件创建,因此不会调用上面的方法。
您将不得不重写-awakeFromNib。
发布于 2010-09-07 23:27:19
如果您的视图控制器是从.xib文件加载的,那么将调用initWithCoder:。initWithNibName:bundle:方法仅用于以编程方式创建视图控制器。
https://stackoverflow.com/questions/3663430
复制相似问题