Swift:单击“返回”按钮后单击标签栏

时间:2014-12-31 18:42:32

标签: ios swift

我是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)
    }

1 个答案:

答案 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和连接,因为它是多余的。