我是swift和IOS开发的新手。我正在使用选项卡式应用程序(3次查看)。例如,FirstView,SecondView和ThirdView。 FirstView有一个打开addNewSession视图的按钮,addNewSession视图有一个返回FirstView的Back按钮。问题是从addNewSession视图返回后,标签栏消失了
FirstView to addNewSession视图。
@IBAction func toAddNew(sender: AnyObject) {
let addNewSession = self.storyboard?.instantiateViewControllerWithIdentifier("addNewSession") as addNew
self.presentViewController(addNewSession, animated: true, completion: nil)
}
将addNewSession视图添加到FirstView
@IBAction func backToPrev(sender: AnyObject) {
println("test1")
let FirstView = self.storyboard?.instantiateViewControllerWithIdentifier("FirstView") as FirstViewController
self.presentViewController(FirstView, animated: true, completion: nil)
}
答案 0 :(得分:1)
问题是你的backToPrev方法正在实例化一个新的FirstViewController,它与你来自的实例不同。你并没有真正回到原来的那个,你正在展示一个新的。这不是你想要的。
执行此操作的正确方法是将FirstViewController嵌入导航控制器中,然后将addNew控制器推入其中。当您使用导航控制器时,您可以免费获得后退行为。
希望您使用的是故事板?选择FirstViewController,转到Editor菜单,然后选择Embed in Navigation Controller。
在你的toAddNew中,使用self.navigationController.pushViewController来推送你的addNew控制器而不是presentViewController。
使用segues可以更轻松地完成最后一步。您可以控制Storyboard中的拖动,从FirstViewController中的按钮到addNew控制器,并创建一个Show segue。触摸按钮时,这将自动显示addNew控制器。使用这种方法,您将需要删除toAddNew IBAction和连接,因为它是多余的。