iphone - UIView removeFromSuperview 调用 viewWillDisappear

标签 iphone ios xcode uiview

我实现了自定义导航,但遇到问题。

在我弹出一个 UIViewController 之后,我手动调用了 viewWillDisappear,但是由于某种原因,当我为此调用 removeFromSuperview 时它又被调用了 UIViewController 的 UIView

我怎样才能阻止这种情况发生?这发生在 iOS 6 上,我确信它不会发生在 iOS 4 上,我还没有测试过 iOS 5。我已经在使用:

 - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
     return NO;
}

但这并没有帮助。

我没有使用 dismissViewControllerAnimated。我已经实现了一个自定义导航 Controller ,我使用自己的堆栈,并通过在屏幕上和屏幕外设置动画 View 来“推送”和“弹出”UIViewController,我调用了 viewWillAppearviewWillDisappear手动。问题是,在我从屏幕上“弹出”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/

相关文章:

ios - WKWebview iOS(快速): Keep session connected after app closed

ios - 验证应用程序时出现 iTunes 商店操作失败错误

ios - 应用商店 : App downloadable only for 3GS and above?

iphone - 有没有可以在 iPhone 上运行的编程环境?

ios - AVAudioSession : Playing audio through earpiece speaker

iphone - iPhone/iPad 上是否有已安装的卷?如何使用这些?

IOS - CNContactPickerViewController 应该只显示有电子邮件的名字吗?

iphone - .h 实现文件无法识别我的 UIViewController

iPhone UINavigationController 应用程序设计

iphone - 更改设备音量