【问题标题】:ViewController initialized by xib can not work?xib初始化的ViewController不能工作?
【发布时间】:2015-09-28 11:20:07
【问题描述】:

这是一个奇怪的问题..

1.我通过xib创建了一个自定义的“view”,并通过

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

这个xib的File's Owner名字是“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 的 File’s Owner 名字是“KWMenuVC”(我也试试 NSObject),然后我选择这个 VC 的视图的自定义类为“UIView”。[这个 xib 命名为“KWMenuVC.xib”]

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

3.后来,我尝试了另一种方法来初始化 KWMenuVC ,无论我如何更改其 Xib 的 File's Owner 名称,它都很好用

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

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

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

非常感谢您的帮助!

【问题讨论】:

  • this class is not key value coding-compliant for the key view 表明您有一个 xib,它试图将某些视图绑定到 UIViewController 子类的 view 属性(可能是该 xib 的文件所有者)。看来您提供的对象不是 UIViewController 并且没有 view 属性,因此此绑定失败。如果没有更多关于这些 xib 包含哪些绑定或哪些对象作为其所有者提供的详细信息,我无法给出更准确的答案。
  • 兄弟,非常感谢您的帮助。我使用了不正确的方法.. initWithNibName:bundle: 是对的。

标签: ios compiler-errors xib viewcontroller


【解决方案1】:

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

【讨论】:

  • 谢谢!我刚刚试过,它有效!但是这行“KWMenuVC *menuVC= [[KWMenuVC alloc]init];”怎么能行呢?它是否调用 initWithNibName:bundle: 方法?
  • 现在我明白了,UIViewController 的 -init 方法称为 initWithNibName:bundle: if using a xib to initialize it .
  • 我没有找到任何文档,但如果 XIB 的名称等于类名,您可以跳过 nibname。但是您可以轻松地对其进行测试;-)
猜你喜欢
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多