[英]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];
现在奇怪的是,该视图已成功添加到子视图中,但是由于某种原因,未同时调用viewDidLoad
和vieWillAppear
。 但是,它已成功调用该方法来创建共享单例和init
方法。
我已仔细检查以确保:
UIViews
或UIViewControllers
为零 [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.