由xib初始化的ViewController无法正常工作?

时间:2015-07-09 21:17:22

标签: ios compiler-errors xib viewcontroller

这是一个奇怪的问题..

1.我通过xib创建自定义“视图”,并通过

初始化它
     KWView *oneView = [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil ]lastObject];

这个Xib的文件所有者名称是“NSObject”(然后我尝试任何其他更多,无论我选择什么,它运行顺利),在那里,我选择视图的自定义类作为“KWView”[这个xib命名为" KWView.xib"]

=======那有效!

2.然后我通过xib创建另一个自定义“viewController”。

 KWMenuVC *menuVC = [[[NSBundle mainBundle] loadNibNamed:@"KWMenuVC" owner:nil options:nil ]lastObject];//  error occurs here
 [self.view addSubview:self.menuVC.view];

这个Xib的文件所有者名称是“KWMenuVC”(我也尝试NSObject),在那里,我选择这个VC视图的自定义类作为“UIView”。[这个xib名为" KWMenuVC.xib" ]

=======这个不行,它停留在“KWMenuVC * menuVC = [[[NSBundle mainBundle] loadNibNamed:@" menuVC" owner:nil选项:nil] lastObject]; “并且错误是”[setValue:forUndefinedKey:]:此类不是键值视图的键值编码兼容“

3.后来,我尝试了另一种方法来初始化KWMenuVC,这很好地解决了我如何更改其Xib文件的所有者名称

     KWMenuVC *menuVC= [[KWMenuVC  alloc]init]; 
     [self.view addSubview:self.menuVC.view];

=======效果很好!

怎么会发生这种情况?我曾经构建应用程序' UI代码。但在某些情况下,xib似乎更有效。现在看来这不是一件容易理解的事情。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

使用XIB初始化UIViewController的正确方法是:

KWMenuVC *viewController = [[KWMenuVC alloc]initWithNibName:@"KWMenuVC" bundle:nil];

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle