在我的应用中,我将子视图放入视图中:
subViewController = [[SubViewController alloc] init];
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"SubView" owner:subViewViewController options:nil];
UIView *view = [nibContents objectAtIndex:0];
view.frame = CGRectMake(2, 0, myView.frame.size.width - 4, myView.frame.size.height);
[myView addSubview:view];
但SubViewController中的viewDidLoad
永远不会被触发。
以下是代码:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"ViewDidLoad");
}
在IB中,我将文件所有者设置为SubViewController
。我不知道问题出在哪里。有任何想法吗?谢谢。
答案 0 :(得分:2)
-viewDidLoad
未被调用,因为您没有执行任何代码来强制加载它。视图控制器的视图为lazy loaded。如果您尝试访问或使用subViewController.view
执行某些操作,它将在控制器上调用viewDidLoad,因为它将创建视图。
答案 1 :(得分:0)
将UIViewControllers视图添加到另一个视图不会使其“活动”,并且它不会接收viewDidLoad,viewDidAppear,viewDidDisappear等。
我会这样做:
subViewController = [[SubViewController alloc] initWithNibName:@"SubView" bundle:nil];
subViewController.view.frame = CGRectMake(2, 0, myView.frame.size.width - 4, myView.frame.size.height);
[self addChildViewController:subViewController];
[self.view addSubview:subViewController.view];
[subViewController didMoveToParentViewController:self];