【问题标题】:Having trouble loading custom view from xib in another xib [duplicate]在另一个 xib 中从 xib 加载自定义视图时遇到问题 [重复]
【发布时间】:2012-05-08 16:59:44
【问题描述】:

很抱歉,因为我看到有人问过这样的问题。但是,按照说明,我没有太多运气。我有兴趣使用 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,然后事情就进入了无限递归。这是有道理的,因为它只是一遍又一遍地重新加载自己。

不知道我从以前的帖子中遗漏了什么,但我很感激任何指导!谢谢!

【问题讨论】:

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


【解决方案1】:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[<UIView 0x548ff00> setValue:forUndefinedKey:]:

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

希望这能解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2016-02-01
    • 1970-01-01
    • 2017-12-27
    • 2017-02-05
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多