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

7

我有一个主viewController和一个detailsViewController,detailsViewController有两个按钮。这两个按钮都是回到主控制器的转场,但我希望根据使用的转场自定义主viewController。最好的方法是如何检查到达一个viewController所使用的转场方式,以便根据其自定义主viewController? - 如果segue1导致进入主viewController,则我希望label1隐藏。如果segue2导致进入主viewController,则我希望label2隐藏。

3个回答

11
在主视图控制器中创建一个变量,例如:
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 Controller中

     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

我会做一些检查哪个segue被使用的操作。不过你需要在storyboard中给segue设置一个标识符!

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

我已经可以将数据发送到mainViewController,但我想在mainViewController中实现一个检查哪个segue用于返回到主视图控制器的功能,并根据此执行一些操作...与main viewController相关。 - IvOS

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

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接