我读过很多关于在IB中设置UI的优点的讨论。当笔尖被“唤醒”时,它中的所有物体“变得生动”。
我正在尝试将大约10个UIView对象放入由ViewController拥有的nib中。 UIView对象属于MyView类型,并连接回ViewController中各自的属性。 MyView是UIView的子类,带有一些其他属性,如UIImage * image& NSNumber *值。
笔尖显然加载,因为我可以看到一些其他UIImageView元素也在笔尖中。但是当我尝试在10个MyView对象中的一个中设置属性时,我无法做到。在调试器中,这些对象的属性仍然是0x0。
我还认为我的MyView类中的initWithCoder方法会因为这10个对象中的每一个从睡眠中醒来而触发,所以我可以在运行时设置一些属性?!
任何人都知道发生了什么......我很高兴放弃IB,但我想我试一试......
答案 0 :(得分:2)
viewDidLoad是在创建视图中的所有对象时调用的第一个方法。 initWithCoder在它们之前被调用。
viewWillAppear在viewDidLoad之后调用,并在显示任何内容之前调用 - 每次调用它时,只在创建视图对象时调用viewDidLoad。
答案 1 :(得分:1)
UIViewControllers
媒体资源时, self.view
会加载观看次数。尝试查看控制器的viewDidLoad
方法是否被调用。
另外,我记得在某处(可能是Apple文档)阅读不建议从笔尖加载多个独立视图,主要是因为内存使用。
答案 2 :(得分:0)
我怀疑您可能已将视图分配给文件所有者。
开放IB。在窗口中有。 文件的所有者 第一反应者 图
右键单击“视图”对象。 如果它只有一个选项 “新引用插座”然后它意味着您没有将视图连接到文件所有者。 只需抓住旁边的那个小o并将其拖动到文件所有者。 一旦超过文件所有者,就会弹出一个新菜单,您可以选择“查看”
保存并查看现在是否正常。
最后检查“文件所有者”是否已设置为您的班级,您只需选择文件所有者并进行检查即可。在其中一个下拉列表中,您将能够选择该类。
IB很酷。不要放弃......节省高达70%的设置代码(如Apple的WWDC所述),坚持下去。约翰。