很抱歉,因为我看到有人问过这样的问题。但是,按照说明,我没有太多运气。我有兴趣使用 xib 文件创建自定义视图并在另一个视图控制器的 xib 文件中重用它。
现有职位:
我已经:
- 创建了一个自定义 xib 文件(我们称之为 CustomView.xib),以及对应的 .h 和 .m 类文件
- 将 xib 文件的 File's Owner 设置为 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,然后事情就进入了无限递归。这是有道理的,因为它只是一遍又一遍地重新加载自己。
不知道我从以前的帖子中错过了什么,但我会很感激任何指导!谢谢!