简体   繁体   English

iOS viewDidLoad未被触发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM