繁体   English   中英

viewDidLoad和ViewDidAppear没有被调用

[英]viewDidLoad and ViewDidAppear not being called

我有一个从xib文件创建的UIViewController

我这样初始化:

 _sharedSingleton = [[SlipChangesViewController alloc] init];
            [[NSBundle mainBundle] loadNibNamed:@"SlipChangesViewController" owner:_sharedSingleton options:nil];

我将该UIViewController的视图添加到另一个UIViewController的子视图中:

[self.view addSubview:slipChangesVC.view];

现在奇怪的是,该视图已成功添加到子视图中,但是由于某种原因,未同时调用viewDidLoadvieWillAppear 但是,它已成功调用该方法来创建共享单例和init方法。

我已仔细检查以确保:

  • 没有UIViewsUIViewControllers为零
  • Xib的插座正确连接
  • 我正在呼叫[super viewDidLoad][super viewWillAppear]

我检查了stackOverflow上的各种线程,并尝试了没有成功的建议。 例如。 调用[slipChangesVC view]

有谁知道为什么不会调用这两种方法?

这不是添加子视图控制器的正确方法。 这样,视图所有者即可获得更改。 从其视图控制器分离的视图,并且视图控制器停止接收viewDidLoad和其他视图方法。

如果要使其工作,请查看已经回答的问题: 在子视图中添加UIViewController

您正在现有视图之上添加一个SlipChangesViewController视图。 在那种情况下,从未调用过viewDidLoad和viewWillAppear。 您需要为此添加一个ViewController

试试这个

- (void)addChildViewC:(UIViewController *)childViewC
{
    [self addChildViewController:childViewC];
    childViewC.view.frame = self.view.bounds;
    [self.view addSubview:childViewC.view];
    [childViewC didMoveToParentViewController:self];
}

我永远不会使视图控制器成为一个单例。 这不是一个单身人士。 它被创建,破坏,再次创建,再次破坏。

我认为viewDidLoad在视图控制器的生命周期内仅被调用一次 因此,使您的单身人士可能会导致各种问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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