Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS viewDidLoad未被激发_Ios_Xib_Subview_Viewdidload - Fatal编程技术网

iOS viewDidLoad未被激发

iOS viewDidLoad未被激发,ios,xib,subview,viewdidload,Ios,Xib,Subview,Viewdidload,在我的应用程序中,我将一个子视图放入一个视图中: subViewController = [[SubViewController alloc] init]; NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"SubView" owner:subViewViewController options:nil]; UIView *view = [nibContents objectAtIndex:0]; view.frame =

在我的应用程序中,我将一个子视图放入一个视图中:

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];
但是子视图控制器内部的
viewdiload
永远不会被激发

代码如下:

- (void)viewDidLoad
{
  [super viewDidLoad];
   NSLog(@"ViewDidLoad");
}

在IB中,我将文件所有者设置为
子视图控制器
。我不知道问题出在哪里。有什么想法吗?谢谢。

-viewDidLoad
未被调用,因为您没有执行任何代码来强制加载它。视图控制器的视图为。如果您尝试访问或使用子ViewController.view执行某些操作,它将在控制器上调用viewDidLoad,因为它将创建视图。

仅将UIViewController视图添加到另一个视图不会使其处于“活动”状态,并且不会接收viewDidLoad、ViewDidDisplay、ViewDidEnglish或其他视图

我会这样做:

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];

subViewController=[[subViewController alloc]init];这是viewDidLoad的调用行,它不能解决您的问题,但它是一个很好的起点:数据这不是真的。初始化时未调用viewDidLoad。第一次访问或使用视图时会调用它。IIRC,只需访问
视图
属性即可强制加载视图。您的代码可以工作,但您的解释有点不正确。视图是延迟加载的。当在视图控制器上访问它时,将立即加载它,之后将立即调用viewDidLoad。因此,在您的代码中,它将发生在第二行。是的,但这也将解决将来不调用其他回调的问题(ViewWillDisplay,ViewDidDisplay,…):同意。我只是想确保他们理解问题的真正本质,而不是仅仅给他们提供神奇的解决问题的代码。谢谢,现在它可以工作了。但是我不明白你代码中的第3行和第5行。没有这两条线它就可以工作。为什么一定要在那里?