objective-c - 在另一个 xib 中从 xib 加载自定义 View 时遇到问题

标签 objective-c ios interface-builder xib loadnibnamed

<分区>

抱歉,因为我看到以前有人问过这样的问题。但是,按照说明进行操作时我运气不佳。我有兴趣使用 xib 文件创建自定义 View 并在另一个 View Controller 的 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,其他 View 作为 subview (UILabel 等)
    • 注意这有一个子 UIView,它也是用代码编写的自定义 View
  • 连接 IBOutlets
  • 创建了一个 ViewController.xib 文件
  • 添加了一个 UIView,将类设置为 CustomView 并将其连接起来

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

然后我尝试了上面一篇文章所说的覆盖 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 中的顶级 View 设置为 CustomView 类。所以我然后将其更改为 CustomView,然后事情就进入了无限递归。这是有道理的,因为它只是一遍又一遍地重新加载自己。

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

最佳答案

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

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

希望这能解决您的问题。

关于objective-c - 在另一个 xib 中从 xib 加载自定义 View 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359211/

相关文章:

ios - iAd 不显示任何广告

objective-c - iOS - 我如何创建一个我的所有 Controller 都可以调用的 "utility"类

ios - 关闭应用程序时不处理深度链接 React Native iOS 应用程序

ios - View 随着延迟 swift 消失

ios - UialertController 仅在 var 达到特定值时显示一次

Xcode 项目资源组织和结构

ios - @IBDesignable View 不会在 Interface Builder 中绘制背景颜色

ios - 苹果 watch : deep linking after notification

iOS 检测用户何时停止触摸 UIImageView

iphone - Swift:下一个按钮的链文本字段