UINavigationController ViewDidDisappear 未触发视图

Posted

技术标签:

【中文标题】UINavigationController ViewDidDisappear 未触发视图【英文标题】:UINavigationController ViewDidDisappear not firing for view 【发布时间】:2010-12-27 23:04:53 【问题描述】:

我正在使用 MonoTouch。当我将新控制器推送到 UINavigationController 的堆栈上时,它工作正常。当我点击后退按钮时,没有事件触发,即使在视觉上,视图从堆栈中弹出。具体来说,我想使用 ViewDidDisappear 和 ViewDidAppear 来做一些事情:

SurveyEditor editor = new SurveyEditor(surveyInstance);
NavigationController.PushViewController(editor, true);

然后在 SurveyEditor 中:

public override void ViewWillDisappear (bool animated)

  Console.WriteLine("SurveyEditor ViewWillDisappear");
  base.ViewWillDisappear (animated);


public override void ViewDidDisappear (bool animated)

  Console.WriteLine("SurveyEditor ViewDidDisappear");
  base.ViewDidDisappear (animated);

这些都没有被调用,在我的根视图中,ViewDidAppear 也没有被调用!开始对这个失去理智了。

【问题讨论】:

更多信息:ViewDidAppear 也没有触发。然而,ViewDidLoad 是。 【参考方案1】:

事实证明,如果我在 ViewController 中有导航控制器,这些事件不会触发。

【讨论】:

【参考方案2】:

如果您使用以下命令从视图控制器启动导航控制器,它会被调用:

[self presentModalViewController:navigationController animated:YES];

(对不起,这不是 MonoTouch - 我在常规 Objective-C 中遇到了问题。这是我的解决方案。)

Look at Dustin Clark's comment here.

【讨论】:

【参考方案3】:

自己调用它,如果它没有被调用。没有什么神奇的事情发生,它只是那个 ViewController 上的一个方法。让它知道它即将消失。

【讨论】:

当我自己调用本应被其他 lib/sys 调用的方法时,我总是感觉很糟糕。

以上是关于UINavigationController ViewDidDisappear 未触发视图的主要内容,如果未能解决你的问题,请参考以下文章

在 Alamofire 中,只有 UINavigationController 被调用!没有其他反应

子视图未正确定位

UIViewController 没有填满屏幕

关闭 UINavigationController 并呈现另一个 UINavigationController

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller