在另一个xib中加载自定义视图xib时遇到了问题。

6

非常抱歉,因为我看到有人之前提出过这样的问题。然而,按照说明我并没有取得很好的效果。我想创建一个自定义视图,使用xib文件,并在另一个视图控制器的xib文件中重复使用它。

现有的帖子:

在另一个xib中使用xib对象

如何同时使用xib和UIView子类?

我已经完成了以下工作:

  • 创建了一个自定义的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,然后出现了无限递归的情况。这很有道理,因为它只是一遍又一遍地重新加载自己。

不确定我错过了之前的哪些内容,但我会感激任何指导!谢谢!


我猜测将xib文件的文件所有者设置为自定义视图可能是问题所在。也许这种方法有帮助:http://stackoverflow.com/questions/17487911/uiview-subclass-with-a-delegate-using-nib/17491977#17491977 - alexbumbu
1个回答

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

以上错误的原因通常是由于在Interface Builder中连接失败,即UIViewController对象与实现类中相应对象之间的连接失败。请检查Interface Builder中的所有连接。还要验证xib文件中的文件所有者。
我希望这能解决你的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接