为啥在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项?

Posted

技术标签:

【中文标题】为啥在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项?【英文标题】:why would I sometimes lose Navigation items when clicking to return to previous screen in UINavigationController app?为什么在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项? 【发布时间】:2011-05-09 03:20:19 【问题描述】:

有谁知道为什么在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项?

背景:

拥有一个使用 UINavigationController 和 UITableViews 的 iPhone 应用程序 98% 的时间一切都很好,如果我在详细屏幕上并单击“返回”按钮,一切都会找到。该应用将您带回主屏幕(弹出堆栈视图) 一小部分时间,在 iPhone 设备本身上,我单击返回,看到一些动画开始,但我最终 (a) 在同一页面上,并且 (b) 没有导航按钮或工具栏按钮出现 在这种状态下,您显然无法执行任何操作,必须终止应用并重新启动

有什么想法吗?怎么找故障? (注意它只是在我注意到的实际设备上进行测试时偶尔发生,并且可能需要数小时/数天才能发生)

谢谢

【问题讨论】:

【参考方案1】:

在 viewController 的 didReceiveMemoryWarning 函数中添加警报。操作系统在某些内存警告(通常不会在模拟器中发生)时调用 viewDidUnload。

【讨论】:

嗨,Gary - 那么您认为这样的内存警告会导致应用程序中出现“有趣”的行为吗?即ios不会让应用程序正常运行或在需要时将其关闭吗? (我猜我的意思是,我不确定) 我在使用 MKMapView 时看到了类似的情况,当发生内存警告时,IntelligentSplitViewController 的条形按钮消失并在切换方向时重新出现。无论如何,这只是您尝试的想法。我不能肯定地说你有同样的问题。 那么添加警报实际上是否有助于解决 Gary 的问题,或者至少让用户知道发生了什么并且他们应该切换方向?你解决过根本原因吗? 我实际上已经停止使用 IntelligentSplitViewController,因为 Apple 不建议在标签栏中使用 SplitViewController。有点不同的故事。 :) 您可以尝试以下代码在模拟器中模拟内存警告。 gist.github.com/956403

以上是关于为啥在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项?的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 中设置时图像不显示

将 managedObjectContext 发送到 viewController 崩溃

如何正确关闭作为模式呈现的 UINavigationController?

ID:[...] 的 NSManagedObject 已失效

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

UINavigationController - 何时释放推送的视图控制器等