ViewController xib初始化不行吗?

ViewController initialized by xib can not work?

这是一个奇怪的问题..

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

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

这个Xib的File's Owner name是“NSObject”(然后我再尝试其他的,无论我选择什么,它运行顺利),在那里,我选择视图的Custom Class作为“KWView”[This xib 名为 "KWView.xib"]

======= 有效!

2.Then 我通过 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 视图的自定义 Class 作为“ UIView.[这个 xib 名为 "KWMenuVC.xib"]

======= 这个不行,卡在“KWMenuVC *menuVC = [[[NSBundle mainBundle]loadNibNamed:@"menuVC" owner:nil options:nil ]lastObject]; “错误是“[setValue:forUndefinedKey:]:这个class不符合键视图的键值编码”

3.Later,我尝试了另一种方法来初始化 KWMenuVC,无论我如何更改其 Xib 的文件所有者名称,它都很有效

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

======= 效果不错!

怎么会这样??我曾经通过代码构建应用程序的UI。但 xib 在某些情况下似乎更有效。现在看来不是一个容易理解的东西。

非常感谢您的帮助!

使用 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: