我创建了三个名为A
,B
和C
的视图控制器。 C
视图控制器是B
视图控制器的子视图,在执行A
时,视图被推送到B
。 C
的视图控制器委托方法viewWillAppear
未调用。
答案 0 :(得分:1)
问题在于IOS版本。
将另一个视图控制器的视图(viewControllerC.view)添加为现有视图控制器(viewControllerB)的子视图时,viewControllerC 的viewWillAppear:()
和viewDidAppear:()
将不会在ios 5.0中触发早期版本。如果需要呼叫,请通过检查设备ios版本手动调用此方法。
您可以检查ios版本并手动调用这样的委托方法......
[viewControllerB addSubview:viewControllerC.view];
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0)
{
[viewControllerC viewWillAppear:YES];
[viewControllerC viewDidAppear:YES];
}
答案 1 :(得分:0)
你说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添加为B的子视图控制器。
//you need to set C to be a child view controller of B
[viewControllerB addChildViewController:viewControllerC];
这应该确保正确调用适当的viewWill / viewDid方法。