0

我有自定义 UIView,它有一个 xib 文件以及 .h 和 .m 文件。我的自定义视图包含许多 UILabel。

我已通过拖入 UIView、转到 Identity Inspector 并将类名更改为 MyCustomView 将此视图添加到 UIViewController 的 xib 文件中。MyCustomView 使用 IBOutlet 属性连接视图控制器。

当视图控制器被加载时,MyCustomView 的

- (id)initWithCoder:(NSCoder*)coder 

方法被调用,但它的标签都没有显示在视图控制器的视图中。我怎样才能解决这个问题?

我已经知道如何使用以下代码通过代码添加自定义 UIView:

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" 
                                                     owner:self 
                                                   options:nil];
MyCustomView *view = [nibContents objectAtIndex:0];
[self.view addSubview:view];

但我想知道如何通过 xib 文件添加。我已经搜索了一段时间,但未能找到答案,所以如果这是重复的,请指出正确的答案。


以下是自定义视图 xib 和视图控制器 xib 的图像:

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

恐怕你不能让 UIViewController 的 xib 加载你自己的视图的 xib。您要么需要以程序方式将这些标签添加到您自己的视图中,

或者

如代码中所示,以编程方式将视图添加到视图控制器的视图中

于 2012-11-22T03:57:55.340 回答
0

我需要查看更多代码才能确定,但​​我怀疑您遇到的问题是自定义视图(UILabels 的父级)没有提供 UILabel 尺寸。它没有调用 -[UIView setFrame:]

要验证这一点,请在调试器中键入:

po [[UIApplication sharedApplication] keyWindow] recursiveDescription]

这将打印视图层次结构的描述。检查 UILbals 的框架是什么。

于 2012-11-22T03:08:25.723 回答