【发布时间】:2011-05-19 00:00:09
【问题描述】:
我有一个要在代码中实例化的 nib 文件。我的 UIViewController 的主视图也是从 nib 文件加载的。
这是我的 UIViewController 的 viewDidLoad 方法:
- (void)viewDidLoad
{
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"MyCustomView" bundle:nil];
NSArray *nibViews = [nib instantiateWithOwner:self options:nil];
MyCustomView *myView = [nibViews objectAtIndex:0];
myView.frame = CGRectMake(100.0f, 100.0f, 91.0f, 91.0f);
[self.view addSubview:myView];
}
这会产生某种无限循环。如果我注释掉 [self.view addSubview:myView],myView 会出现,但当前屏幕上的所有内容都会消失。我不认为 instantiateWithOwner 将视图添加到屏幕上。如果是,我如何访问它?
感谢您的帮助。
【问题讨论】:
-
您是否在 Interface Builder 和代码中声明了 XIB 名称?如果你这样做,我认为你会收到一个警告,但它会编译。
-
我的 .h/.m 文件(nib 背后的代码)和 nib 具有相同的名称。它基本上类似于:MyCustomView.h、MyCustomView.m、MyCustomView.xib。不过这不是问题,而且这似乎是人们这样做的一般方式。
-
我不是这个意思。在您的 MainWindow.xib 中,如果您已将自定义视图设置为视图控制器(这是一种方法)。然后,您应该添加一个带有 nib 的子视图。这样做会导致子视图的无限循环。