首先:我将Swift 5与Xcode 10(iOS 12.0)结合使用。
我对Swift / iOS开发还很陌生,并且观看了一些视频,了解如何在导航栏中添加“后退”按钮。在所有这些工具中(使用Swift 3),在添加了segue(在第一个场景的项目和第二个场景的项目之间)和两个导航栏的标题之后,一旦运行该应用程序,按钮就会神奇地出现。
我的应用有三个ViewController /场景:
场景2和3之间的顺序设置为“显示(例如,推送)”,因为“推”已弃用,导致应用崩溃。
我将两个导航栏都手动添加到了导航控制器(2和3),并想将箭头图标添加到场景3的导航栏中。到目前为止,我已经尝试过:
但是,无论是在Xcode中还是在模拟器中都没有任何显示(甚至没有图像)。
是否仍然有可能获得自动的“后退”按钮,或者您现在是否必须使用“条形按钮项”自己添加它?
答案 0 :(得分:0)
因此,当您show
像v2,v3这样的View Controller时,这些View Controller不再与v1处于同一导航堆栈中,这就是为什么它不会自动显示后退按钮的原因。
我不知道为什么不赞成您使用Push函数,但是如果您可以抓取屏幕截图,也许我可以为您提供一个理由。我正在使用Swift5,并且可以使用以下命令:self.navigationController?.pushViewController(vc, animated: true)
要回答您的问题,如果要向v2,v3添加后退按钮,则必须使用BarButtonItem,然后调用
self.dismiss(viewController, true)
我强烈建议您不要这样做,如果您打算将它们与v1放在同一导航堆栈中。
答案 1 :(得分:0)
回答我自己的问题:是的,仍然有可能(Xcode 10 / Swift 5)使其自动添加“后退”按钮。
Push
自iOS 8起就不再使用,所以请改用Show (e.g. Push)
!
通常情况下,Show (e.g. Push)
使用Show
,但是如果当前NavigationController
的左边(场景从左到右)有ViewController
,它将自动使用Push
,它还会在下一个场景的NavigationBar中添加一个“后退”按钮,或者,如果没有NavigationBar,则只需将该按钮添加到通常位于该位置的按钮上即可。
我的场景现在看起来像这样:
NavigationController
)UITableViewController
(如果通过库添加了)将数据添加到1.和3.之间的序列中(使用2.)与使用NavigationController的情况稍有不同:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let navC = segue.destination as? UINavigationController
let vc2 = navC?.viewControllers.first as! ViewController2
vc2.myinformation = myinfosArray
}
(Bad)NavigationController的替代选择:
添加一个NavigationBar
和一个BarButtonItem
并将其链接到上一个视图,就像使用其他任何按钮一样。
缺点:切换到下一个视图后,该视图(在我的情况下为“ ViewController2”)会重置(因为两个视图不在同一堆栈中,请参见上面jaelee的说明),因此如果要返回,则必须重新设置所有内容。