假设我有ViewController
需要访问视图。在我正在做的ViewController
的类文件中
IBOutlet ViewA *someview;
在Interface Builder中,我将UIView
拖放到我的文档中,并将类设置为ViewA
。
我错过了当你通过IB连接时如何实例化“东西”。在.xib文件取消存档时是否自动分配ViewA
?如果我不想使用IB怎么办?
答案 0 :(得分:1)
如果您不想使用IB,而不是将IBOutlet放在那里,您只需消除它,只留下
ViewA *someview;
然后在代码中的某个地方,当您需要视图时,执行
someView = [[UIView alloc] initWithFrame: rect];
我更喜欢IB,其他人更喜欢以编程方式创建视图。我喜欢如何定位所有视图子视图,包括UIButtons,UILabels,UITableViews,其他UIViews等,而不必使用坐标来执行此操作。 YMMV。
当事情被实例化时,当使用XIB时,你的应用可能会懒洋洋地加载视图控制器,一旦加载,它就会加载你的视图。实际上加载视图的是当你第一次访问变量someView时。虽然有一个插座连接,但在您以任何方式访问someView之前,视图及其子视图都不会加载,例如,如果您只是执行以下操作:
if (someview) {
// the view is loaded now
}