如何知道使用Swift使用哪个segue?

时间:2016-03-29 06:10:47

标签: swift segue

我有一个主viewController和一个detailsViewController。 detailsViewController有2个按钮。两个按钮都是segue回到主控制器,但我想根据使用的segue自定义主viewController。检查哪个segue用于到达viewController的最佳方法是什么,以便可以根据具体情况自定义主viewController? - 如果segue1通向主viewController,那么我想隐藏label1。如果segue2通向主viewController,那么我希望label2隐藏。

3 个答案:

答案 0 :(得分:10)

在主视图控制器中创建一个变量,如

var vcOne : Bool = true

现在在DetailsViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if segue.identifier == "segue_one"
        {
            let mainVC : MainViewController = segue.destinationViewController as! MainViewController
            secondVC.vcOne = true


        }
        else if segue.identifier == "segue_two"
        {
           let mainVC : MainViewController = segue.destinationViewController as! MainViewController
            secondVC.vcOne = false
        }

    }

现在在MainView控制器

     override func viewWillAppear(animated: Bool) {
             super.viewWillAppear(animated)

             //Now check here for which segue
            if(vcOne)
           {
            // implement for button one click

            }
           else
           {
              // implement for button two click 

           }


        }

希望它可以帮到你

答案 1 :(得分:1)

我要做的事情就是检查使用了哪个segue。您必须在故事板中为segue设置标识符!

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "yourIdentifier" {
        let yourVC = segue.destinationViewController as? yourViewController
        //do magic with your destination
    }
}

答案 2 :(得分:0)

可以选择设置segue的标识符。这应该是唯一标识符。这样您就可以识别哪个segue被激活了。 例如:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "Identifier1" {
        let firstVC = segue.destinationViewController as? FirstViewController

    } else if segue.identifier == "Identifier2" {
        let secondVC = segue.destinationViewController as? SecondViewController

    }
}