initWithNibName没有被调用
我需要将一些自定义逻辑放到我的iPhone应用程序中,以便根据所运行的iOS版本select不同的XIB文件(即iPhone或iPad将显示不同的XIB文件)。
我从一开始就构build了完整的iPhone应用程序,使用tabbarcontroller和每个标签中的标准导航控制器。
所以我实现了:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
方法,只是发现它没有被调用。 (我有一个断点和日志的声明,没有被击中)。
有谁知道这可能是为什么? 或者我如何实现这个function?
我已经读过initWithNibName只有当你调用它时,也就是说,当你编程构造你的视图层次结构,这是真的?
如果您在将其添加到导航控制器之前没有这样做:
SomeViewController *someViewController = [[SomeViewController alloc] initWithNibName:...];
那么机会是好的,你压倒了错误的方法。
如果你的视图控制器存在于一个nib文件中,比方说你的导航控制器的nib文件,它将作为一个新的视图控制器对象从nib文件中取消存档,而不是用自己的nib文件创build,所以上面的方法不会调用。
您将不得不重写-awakeFromNib
。
如果你的视图控制器是从一个.xib
文件加载,那么initWithCoder:
将被调用。 initWithNibName:bundle:
方法仅用于以编程方式创build视图控制器。
- UIActivityViewController和UIDocumentInteractionController
- 我可以使用Objective-C以外的其他语言编写iPhone应用程序吗?
- iAd广告显示的替代scheme?
- UIPageViewController的setViewControllers,UIPageControl不显示正确的当前编号
- 创build第一个启动视图控制器
- 如何确定在Objective-C中图像是否为逐行JPEG(交错)
- dataWithContentsOfURL返回NSCocoaErrorDomain代码= 256蜂窝,但不是WiFi
- ios:如何用CGPath模糊图像?
- 使用UITableViewAutomaticDimension行高自动滚动到表的底部? – Swift,iOS 8+