我实现了自定义导航
,但遇到问题。
在我弹出一个 UIViewController
之后,我手动调用了 viewWillDisappear
,但是由于某种原因,当我为此调用 removeFromSuperview
时它又被调用了 UIViewController 的
UIView
。
我怎样才能阻止这种情况发生?这发生在 iOS 6
上,我确信它不会发生在 iOS 4
上,我还没有测试过 iOS 5。我已经在使用:
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return NO;
}
但这并没有帮助。
我没有使用 dismissViewControllerAnimated
。我已经实现了一个自定义导航 Controller ,我使用自己的堆栈,并通过在屏幕上和屏幕外设置动画 View 来“推送”和“弹出”UIViewController,我调用了 viewWillAppear
和 viewWillDisappear
手动。问题是,在我从屏幕上“弹出”UIViewController
之后,当我调用 [currentViewController.view removeFromSuperView]
时,viewWillDisappear
方法被调用,我不想要那个,因为我已经这样调用它了。
如有任何帮助,我们将不胜感激。
最佳答案
好的,我找到了解决方案。问题是我正在调用 [controller.view removeFromSuperview]
并且我注意到在调用堆栈中调用了 [UIViewcontroller _setViewState:animated]
。所以我做了一个小 hack:
UIView *view = controller.view;
controller.view = nil;
[view removeFromSuperView];
[controller release];
现在,调用 [view removeFromSuperview] 时不再调用 viewWillDisappear。希望这会对某人有所帮助。
关于iphone - UIView removeFromSuperview 调用 viewWillDisappear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13512656/