0

我创建了三个名为AB的视图控制器CC视图控制器是视图控制器的子视图B,在执行时A视图被推送到BC的 View Controller 委托方法viewWillAppear未调用。

4

2 回答 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 回答