0

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

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

但是viewDidLoad在 SubViewController 内部永远不会被解雇。

这是代码:

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

在 IB 中,我将文件所有者设置为SubViewController. 我不知道问题出在哪里。有任何想法吗?谢谢你。

4

2 回答 2

2

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

于 2013-05-24T14:24:52.023 回答
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];
于 2013-05-24T14:28:13.047 回答