我正在使用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]
有谁知道为什么不会调用这两种方法?
答案 0 :(得分:1)
这不是添加子视图控制器的正确方法。通过这种方式,视图所有者获得更改。从视图控制器和视图控制器分离的视图停止接收viewDidLoad和其他视图方法。
如果您想让它发挥作用,请查看已经回答的问题: add UIViewController in subview
答案 1 :(得分:1)
您正在现有视图上添加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];
}
答案 2 :(得分:0)
我永远不会让视图控制器成为单身人士。它不是单身人士。它被创造,破坏,再次创造,再次被摧毁。
我认为在视图控制器的生命周期中,viewDidLoad只被称为一次。因此,让你成为一个单身人士可能会导致各种各样的问题。