viewWillAppear没有在iOS中调用

时间:2013-03-28 09:00:08

标签: iphone ios xcode

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

2 个答案:

答案 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方法。