自动在导航栏中添加“后退”按钮

问题描述 投票:0回答:2

首先:我正在使用Swift 5和Xcode 10(iOS 12.0)。

我对Swift / iOS开发很新,并观看了几个关于如何在导航栏中添加“后退”按钮的视频。在所有这些(使用Swift 3)中,一旦应用程序在添加segue(在第一个场景中的项目和第二个场景之间)和两个导航栏的标题之后运行,该按钮就会神奇地出现。

我的应用程序有三个ViewControllers / scenes:

  1. 登录没有导航栏(“登录”按钮:segue到场景2)
  2. 表视图(使用segue链接到场景3,因此我可以点击列表中的项目)
  3. 表视图中单个项目的更多信息

场景2和3之间的segue设置为“show(例如push)”,因为“push”已弃用并且崩溃应用程序。

我手动将两个导航栏添加到导航控制器(2和3),并想要在场景3的导航栏中添加箭头图标。到目前为止我尝试过:

  • 在两个场景中添加导航栏的标题
  • 设置“后退按钮”属性(导航栏文本),该属性创建了一个子对象
  • 然后设置子对象的“图像”属性
  • 将“Back”和“Back Mask”属性(导航栏)设置为同一图像

但是在Xcode和模拟器中都没有出现任何东西(甚至不是图像)。

是否仍然可以获得一个自动“后退”按钮,或者你现在必须使用“条形按钮项目”自己添加它?

ios swift uinavigationbar back-button uinavigationitem
2个回答
0
投票

因此,当您使用视图控制器(如v2,v3)时,这些视图控制器不再与v1位于同一导航堆栈中,这就是为什么它不会自动显示后退按钮。

我不知道为什么说你的推送功能已被弃用,但如果你能抓住截图,我可以告诉你原因。我正在使用Swift5,我可以使用它:show

要回答你的问题,如果你想向v2,v3添加一个后退按钮,那么你必须使用BarButtonItem,并调用self.navigationController?.pushViewController(vc, animated: true)我强烈建议你不要这样做,如果你的意图是将它们放在同一个导航堆栈中你的v1。


0
投票

回答我自己的问题:是的,它仍然是(Xcode 10 / Swift 5)可以自动添加“后退”按钮。

自iOS 8以来,self.dismiss(viewController, true) segues已被弃用,因此请改用Push

通常Show (e.g. Push) segue使用Show (e.g. Push),但如果在当前q​​azxswpoi的左边某个地方(从左到右的场景)有一个Show,它会自动使用NavigationController,它还会为下一个场景的NavigationBar添加一个“后退”按钮,或者如果没有NavigationBar,它只是添加栏通常所在的按钮。

我的场景现在看起来像这样:

  1. ViewController 1:无导航栏登录(“登录”按钮:segue to qazxsw poi)
  2. NavigationController:自动segue到新的ViewController(如果通过库添加)
  3. ViewController2:表视图(链接到4.与segue)
  4. ViewController3:单个项目的更多信息

将数据添加到1.和3之间的segues(使用2.)处理与没有NavigationController时的处理有点不同:

Push

(坏)替代NavigationController:

添加一个NavigationController和一个UITableViewController并将其链接到上一个视图,就像任何其他按钮一样。

缺点:视图(在我的情况下是“ViewController2”)一旦切换到下一个视图就会重置(因为两个视图不在同一个堆栈上,请参阅上面的jaelee的说明),所以如果你回去你必须设置一切再次。

© www.soinside.com 2019 - 2024. All rights reserved.