0

我读过很多关于在 IB 中设置 UI 的优点。以及当笔尖被“唤醒”时,其中的所有物体如何“复活”。

我正在尝试将大约 10 个 UIView 对象放入 ViewController 拥有的 nib 中。UIView 对象属于 MyView 类型,并被连接回 ViewController 中它们各自的属性。MyView 是 UIView 的子类,具有一些附加属性,例如 UIImage *image 和 NSNumber *value。

笔尖清楚地加载,因为我可以看到一些其他 UIImageView 元素也在笔尖中。但是,当我尝试在 10 个 MyView 对象之一中设置属性时,我无法做到。在调试器中,这些对象的属性仍然是 0x0。

我还觉得 MyView 类中的 initWithCoder 方法会在这 10 个对象中的每一个从睡眠中唤醒时触发,所以我可以在运行时设置一些属性?!?

任何人都知道发生了什么……我很高兴为此放弃 IB,但我想我会试一试……

4

3 回答 3

2

viewDidLoad 是创建视图中的所有对象时调用的第一个方法。initWithCoder 在它们中的任何一个之前被调用。

viewWillAppear 在 vi​​ewDidLoad 之后调用,并在显示任何内容之前调用 - 每次都会调用它,其中 viewDidLoad 仅在创建视图对象时调用。

于 2009-07-02T04:49:59.950 回答
1

UIViewControllers首次访问该self.view属性时加载他们的视图。尝试查看是否viewDidLoad调用了控制器的方法。

另外,我记得在某处(可能是 Apple 文档)读到不建议从 nib 加载多个独立视图,主要是因为内存使用。

于 2009-07-02T02:02:44.580 回答
0

我怀疑可能是您已将视图分配给文件所有者。

打开IB。在那个窗口里。文件所有者第一响应者视图

右键单击“视图”对象。如果它只有一个选项“新引用出口”,那么这意味着您还没有将视图连接到文件所有者。只需抓住旁边的那个小 o 并将其拖到文件所有者处。一旦超过文件所有者,应该会弹出一个新菜单,您应该能够选择“查看”

保存它,看看现在是否正常工作。

最后检查“文件的所有者”是否已设置为您的班级,您只需选择文件的所有者并检查它。在其中一个下拉菜单中,您将能够选择课程。

IB很酷。不要放弃... 最多可节省 70% 的设置代码(如 Apple 在 WWDC 中所述),所以坚持下去。

约翰。

于 2009-07-02T02:26:12.910 回答