1

我有一个自定义navigation实现,但我有一个问题。

在我弹出一个之后UIViewController,我手动调用viewWillDisappear,但由于某种原因,当我调用它时它又被调用removeFromSuperviewUIViewController's UIView

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

 - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
     return NO;
}

但这无济于事。

我没有使用dismissViewControllerAnimated. 我已经实现了一个自定义导航控制器,我使用我自己的堆栈,并通过在屏幕上和屏幕外动画它们的视图来“推送”和“弹出”UIViewControllers,然后我viewWillAppear手动viewWillDisappear调用。问题是,在我“弹出”UIViewController屏幕外后,当我调用[currentViewController.view removeFromSuperView]viewWillDisappear方法时,我不希望这样,因为我已经调用了它。

任何帮助,将不胜感激。

4

2 回答 2

2

好的,我找到了解决方案。问题是我正在调用[controller.view removeFromSuperview]并且我在调用的调用堆栈中注意到了[UIViewcontroller _setViewState:animated]。所以我做了一个小技巧:

UIView *view = controller.view;
controller.view = nil;
[view removeFromSuperView];
[controller release];

现在,调用 [view removeFromSuperview] 时不再调用 viewWillDisappear。希望这会对某人有所帮助。

于 2012-11-22T12:47:13.320 回答
0
[self dismissViewControllerAnimated:YES completion:NULL];

尝试使用这个....

于 2012-11-22T12:25:55.050 回答