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