我已经实施了自定义navigation
,但我遇到了问题。
我弹出UIViewController
后,我手动拨打viewWillDisappear
,但出于某种原因,当我为removeFromSuperview
UIViewController's
致电UIView
时,会再次呼叫它。
我怎样才能阻止这种情况发生?这种情况发生在iOS 6
,我确信它不适用于iOS 4
,我还没有针对iOS 5进行测试。我已经在使用:
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return NO;
}
但它没有帮助。
我没有使用dismissViewControllerAnimated
。我已经实现了一个自定义导航控制器,我使用自己的堆栈,并通过在屏幕上和屏幕外设置动画来“推送”和“弹出”UIViewControllers,我手动调用viewWillAppear
和viewWillDisappear
。问题是,当我“弹出”UIViewController
关闭屏幕后,当我调用[currentViewController.view removeFromSuperView]
viewWillDisappear
方法被调用时,我不想这样,就像我已经调用它一样。
任何帮助都将不胜感激。
答案 0 :(得分:2)
好的,我找到了解决方案。问题是我正在调用[controller.view removeFromSuperview]
并且我在调用堆栈中注意到调用了[UIViewcontroller _setViewState:animated]
。所以我做了一个小黑客:
UIView *view = controller.view;
controller.view = nil;
[view removeFromSuperView];
[controller release];
现在,调用[view removeFromSuperview]时不再调用viewWillDisappear。希望这会对某人有所帮助。
答案 1 :(得分:0)
[self dismissViewControllerAnimated:YES completion:NULL];
尝试使用它....