无法从另一个xib中的xib加载自定义视图

时间:2012-04-27 23:40:26

标签: objective-c ios interface-builder xib loadnibnamed

道歉,因为我看到之前有人问过这样的问题。但是,按照说明我没有太多运气。我有兴趣使用xib文件创建自定义视图,并在另一个视图控制器的xib文件中重用它。

现有职位:

Using xib object inside another xib

How to use a xib and a UIView subclass together?

我已经:

  • 创建了一个自定义xib文件(让我们称之为CustomView.xib),以及相应的.h和.m类文件
  • 将xib文件的文件所有者设置为CustomView
  • 创建了一个顶级UIView,其他视图为子项(UILabel等)
    • 注意这有一个子UIView,它是一个用代码编写的自定义视图
  • 连接IBOutlets
  • 创建了一个ViewController.xib文件
  • 添加了一个UIView,将类设置为CustomView并将其连接起来

这会导致在构建应用程序时显示空白视图。

然后我尝试了上面的帖子之一所说的,它覆盖了CustomView的initWithDecoder方法并添加了以下内容:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self addSubview:mainView];

遗憾的是,这导致了以下错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[<UIView 0x548ff00> setValue:forUndefinedKey:]:

我认为这可能是因为我没有将CustomView.xib中的顶级视图设置为CustomView类。然后我将其更改为CustomView,然后事情进入无限递归。这是有道理的,因为它只是一遍又一遍地重新加载。

不确定我之前的帖子中遗漏了什么,但我很感激任何指导!谢谢!

1 个答案:

答案 0 :(得分:1)

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[<UIView 0x548ff00> setValue:forUndefinedKey:]:

上述error的原因通常是由于Interface Builder中的连接失败,即UIViewController对象与实现类中的相应对象失败。请检查Interface Builder中的所有连接。还要验证xib文件中的文件所有者。

我希望这能解决你的问题。