[英]iOS viewDidLoad is not fired
In my app I am putting a sub view into a view: 在我的应用程序中,我将子视图放入视图中:
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];
But viewDidLoad
inside SubViewController is never fired. 但是从不触发SubViewController中的
viewDidLoad
。
Here is the code: 这是代码:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"ViewDidLoad");
}
In IB I have set files owner as SubViewController
. 在IB中,我将文件所有者设置为
SubViewController
。 I don't know where the problem is. 我不知道问题出在哪里。 Any ideas?
有任何想法吗? Thank you.
谢谢。
-viewDidLoad
is not called because you are not executing any code to force it to load. -viewDidLoad
未被调用,因为您没有执行任何代码来强制加载它。 A view controller's view is lazy loaded . 视图控制器的视图是延迟加载的 。 If you try to access or do something with
subViewController.view
it will call viewDidLoad on the controller because it will create the view then. 如果您尝试访问或使用
subViewController.view
执行某些subViewController.view
,它将在控制器上调用viewDidLoad,因为它将创建视图。
Just adding UIViewControllers view to another view wont make it "active" and it won't receive viewDidLoad, viewDidAppear, viewDidDisappear nor others. 只是将UIViewControllers视图添加到另一个视图不会使其“活动”,它将不会接收viewDidLoad,viewDidAppear,viewDidDisappear等。
I would do this: 我会这样做:
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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.