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 被调用!没有其他反应
关闭 UINavigationController 并呈现另一个 UINavigationController
iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?
带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller