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 设置动画