笔尖自动添加到屏幕上

时间:2011-05-19 00:00:10

标签: iphone ios uiview xib

我有一个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将视图添加到屏幕上。如果是,我该如何访问它?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

instantiateWithOwner方法重新分配视图控制器的属性(从创建控制器的nib设置)到新笔尖的属性。这些属性可能包含view属性,因此其中的方法包含对setView:的调用,并将视图控制器的视图设置为新的nib视图。之后,您正在尝试将视图作为子视图添加到自身,这自然会导致问题。

您想要创建自己的属性,例如secondaryView,将nib的视图设置为该属性,并将其添加为子视图。您不想重新分配视图控制器的视图。