UINavigationController 有时在 iOS5 上缺少返回按钮

Posted

技术标签:

【中文标题】UINavigationController 有时在 iOS5 上缺少返回按钮【英文标题】:UINavigationController sometimes missing back button on iOS5 【发布时间】:2011-10-28 21:50:20 【问题描述】:

ios 5 升级以来,我们时常收到关于缺少返回按钮的报告,这是由 UINavigationController 提供的。

此应用已在应用商店上线 > 1 年,因此通过 here、here 或 here 提供的建议不太可能解决此问题。

我已附上显示此问题的屏幕截图。不幸的是,我无法在模拟器或我的设备上重现它,但到目前为止我们已经收到了几份来自用户的报告。

有没有其他人在 iOS5 中遇到和/或成功解决过这个问题?

谢谢!

【问题讨论】:

你是如何创建你的 UINavigationController 的?通过 XIB 文件或以编程方式通过 initWithRootViewController 实例化? 我使用 Three20,所以 TTNavigator 类实例化了一个 UIViewController,它本身包含四个 UINavigationController 和一个自定义绘制的 TabBar。代码中的任何地方都没有使用 XIB。 【参考方案1】:

我相信我至少在其中一个案例中发现了这个问题的原因。当 iOS 5 中的用户点击通知时,将调用此回调:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

此方法会将视图推送到 UINavigationController,这实际上是我们最近引入的新行为。如果该应用程序以前正在运行,它将正常工作。如果应用程序之前没有运行,它会在初始化所有内容之前过早地将视图推送到导航控制器上。


除此之外,还有另一个问题导致了这个错误。我将前一个视图的标题设置为空字符串@"",不要与 nil 混淆,在这种情况下,没有绘制返回按钮。因此,请注意不要将视图的标题设置为空字符串,否则您将无法获得返回按钮!

【讨论】:

换句话说,新视图将作为第一个视图被推送,因此没有任何东西可以返回? 另外,我对 didReceiveRemoteNotification 进行了快速的谷歌搜索,并查看了所有指向 Stack Overflow 的链接,似乎(对我而言)这里有一些答案已经说明了相同的内容.特别是这个问题:***.com/questions/1998196/… - 看起来很有希望 是的——新视图将作为第一个视图推送,因此没有任何可返回的内容。

以上是关于UINavigationController 有时在 iOS5 上缺少返回按钮的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 不适用于 SearchDisplay 控制器

UINavigationController 上未出现后退按钮 - 无法调试

UINavigationController 后退按钮一半适用于 iPad 横向

如何在 UINavigationController 的视图下为 UIView 设置动画

Swift - UINavigationBar 有时仅包含在屏幕高度中?

导航控制器有时会使用情节提要推送到黑屏