viewWillAppear不会在iOS中调用
我创建了三个视图控制器,名为A
,B
和C
。 C
视图控制器是B
视图控制器的子视图,同时执行A
的视图被推送到B
。 C
的视图控制器委托方法viewWillAppear
未调用。viewWillAppear不会在iOS中调用
你说的是c的视图控制器是一个子视图B.
我假设你做这样的事情:
UIViewController *viewControllerB = [[UIViewController alloc] init];
UIViewController *viewControllerC = [[UIViewController alloc] init];
//add C's view to B
[[viewControllerB view] addSubview:[viewControllerC view]];
如果是这样,那么你需要的viewController添加C作为一个孩子的viewController B的
//you need to set C to be a child view controller of B
[viewControllerB addChildViewController:viewControllerC];
这应该确保正确调用相应的viewWill/viewDid方法。
谢谢你这帮了我很多 – datha 2013-04-03 09:30:26
不客气:] – CaptainRedmuff 2013-04-03 09:31:08
问题出在IOS版本。
同时加入了另一个视图控制器的视图(viewControllerC.view)作为副视点现有的视图控制器(viewControllerB)viewWillAppear:()
和viewControllerC 的viewDidAppear:()
,将不会触发在IOS 5.0早期版本。如果您需要呼叫,则通过检查设备ios版本手动调用此方法。
您可以检查IOS版本和手动调用委托方法是这样的...
[viewControllerB addSubview:viewControllerC.view];
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0)
{
[viewControllerC viewWillAppear:YES];
[viewControllerC viewDidAppear:YES];
}
c视图控制器是否显示? – iPatel 2013-03-28 09:01:02
请显示代码将C作为“子视图”添加到B的代码。如果您不将其添加为子视图控制器,则不会获得viewWillAppear消息。 – jrturton 2013-03-28 09:02:01