Xcode 6.4 后退按钮消失

Posted

技术标签:

【中文标题】Xcode 6.4 后退按钮消失【英文标题】:Xcode 6.4 back button disappears 【发布时间】:2015-11-22 08:50:47 【问题描述】:

我使用的是 Mac OSX El Capitan 10.11.1、Xcode 6.4、ios SDK 8.4。

我已经阅读了这里的几个后退按钮消失的帖子,没有一个与我的问题有关。

我正在为 Uni 作业创建一个购物应用程序。我创建了一个菜单、产品列表、产品详细信息、购物车和结帐故事板。 我可以成功地从菜单导航-> 任何其他,并且后退按钮在那里。我也可以毫无问题地导航菜单 -> 购物车 -> 结帐。但是当我导航菜单 -> 产品列表 -> 产品详细信息 -> 购物车 -> 结帐时,结帐视图会丢失后退按钮。我做了 println(self.navigationController!.navigationBarHidden) 它说是假的。

我没有隐藏任何标题或导航栏或任何东西。 只是这种特殊的方式它失去了后退按钮,我点击它没有检测到的区域并突然出现。

我还注意到默认转换是从右到左滑动到视图中,但是当我进行有问题的导航时,我得到了从下到上的滑动转换。

感谢任何想法。

:编辑:

我尝试执行到购物车的 segue 的代码是

performSegueWithIdentifier("Cart", sender: nil)

我也试过发件人:自我。在此之后,购物车的结帐 segue 就会出现问题。

【问题讨论】:

您是在使用故事板转场还是从代码中展示新的视图控制器? 您使用过时的 Xcode 有什么特别的原因吗? 他们教我们 swift 1.2 和 Xcode 6.4,因为我们开始时 Xcode 7 还没有推出。 【参考方案1】:

在我看来,您在结帐屏幕上以模态方式呈现UIViewController。如果您使用 pushViewController(_:animated:)UIViewController 推送到导航堆栈,导航控制器将为您创建后退按钮。

如果您使用presentViewController(_:animated:completion:) 显示控制器,它将显示在导航控制器的顶部(从底部向上滑动动画)并且不提供返回按钮。您需要创建自己的机制才能返回。最简单的是dismissViewControllerAnimated(_:completion:)

解决您的问题的最简单方法是更改​​演示样式。将presentViewController(_:animated:completion:) 替换为pushViewController(_:animated:),它提供后退按钮,以便您完成大学作业。

【讨论】:

我正在使用 performSegue。我使用从菜单-> 购物车-> 结帐作为较长路线导航的相同方法。只是在较长的路线上它会塞满。 然后在情节提要中检查你的 segues 并检查是否有任何在属性检查器中设置为 Present modally 的类型。或者尝试在没有返回按钮的UIViewController 中调用dismissViewControllerAnimater,以便轻松检查您是否以模态方式呈现。 我会检查它,但听起来情况并非如此,因为我在两个导航路径中都以相同的方式通过 segue,只是当问题出现时,segue 遍历的次数会更长本身。导航路径是 menu->cart->checkout 和 menu->product list->product detail->cart->checkout this self.dismissViewControllerAnimated(true,completion: nil) 解除控制器并返回购物车。 是的,所以它以某种方式呈现。你有没有公开的项目?猜测可能出了什么问题有点复杂【参考方案2】:

问题是我直接将 segue 链接到视图控制器而不是导航控制器。将 segue 重新连接到导航控制器,一切都恢复正常了。

【讨论】:

以上是关于Xcode 6.4 后退按钮消失的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 后退按钮消失?

使用自定义后退按钮后导航标题消失

如果包含 endDrawer,Flutter 2.0 appbar 后退按钮会消失

为啥导航栏后退按钮项消失?斯威夫特 4

iOS 5中缺少navigationController栏后退按钮

当 navigationItem.title 太长时后退按钮标题消失