为什么loadNibNamed:owner:options会自动安装在当前视图中?

时间:2013-12-16 14:06:28

标签: ios

- (void)viewDidLoad
{
    [super viewDidLoad];    
    UIView *testView = [[[NSBundle mainBundle] loadNibNamed:@"VBImageView" owner:self options:nil] lastObject];

    NSLog(@"%d", [self.view.subviews count]); // result is 1
}

我不明白的是,只需通过调用loadNibNamed方法实际加载imageView并添加到当前子视图?为什么?有人可以解释一下吗?


更新

我发现在xib文件中,Files's owner具有视图委托设置,如果我删除了该委托,则视图将不会自动设置。那个观点代表意味着什么呢?

我现在已经在here

上传了所有源文件

1 个答案:

答案 0 :(得分:0)

我做了同样的事情,但记录 0 ,所以我认为你的视图控制器的视图不是空的,你能试试NSLog(@"%@", self.view.subviews)并向我展示结果吗?

对于第二个问题,该视图出口只是ViewController的属性,该视图在断开连接时不会自动设置,因为您的窗口无法找到要添加的视图。

修改

那太有线了,我下载你的源代码并在模拟器上运行它,它也记录 0 enter image description here

loadFromNib中删除viewDidLoad方法后,它会记录 2 。然后我发现故事板中有两个指南布局和一个视图。enter image description here

通过在故事板中删除该视图,它会记录为零。所以我认为这就是原因。但是,我不熟悉故事板,所以我无法完全解释它。关于那个。