将segue传递数据展开到不同的viewcontrollers

时间:2016-05-29 18:50:16

标签: ios iphone swift segue unwind-segue

我有一个有4种不同形式的应用程序。这些表单可以通过单击不同的问题来完成,并通向一个包含选项的viewcontroller。我们称之为OptionViewController。现在我有4种不同的形式,有不同的选项,但都使用OptionViewController从数据库中提取数据,我需要展开segue并传递数据。

由于可能有4个不同的视图控制器,我需要确保正确传递信息,即确定目标视图控制器unwindsegue是否正在执行第一,第二,第三或第四个视图控制器。

我以为我可能会做这样的事情

        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.

    if segue.identifier == "optionSelected" {

        if segue.destinationViewController == FirstViewController {

             //pass data

        } else if segue.destinationViewController == SecondViewController {
             //pass data
        }

    }
}

但显然我无法执行segue.destinationViewController == FirstViewController

我该怎么做?或者我应该为每个表单创建一个OptionViewController,这将解决我的问题,但我不确定整体应用程序性能是否会因视图控制器的增加而下降

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:0)

要测试目标视图控制器是否属于特定类,请使用Swift关键字is

if segue.destinationViewController is FirstViewController {

或者,您可以使用可选绑定将viewController分配给变量,并使用可选的强制转换

if let dvc = segue.destinationViewController as? FirstViewController {
    // dvc will have type FirstViewController so you can access specific
    // properties of FirstViewController using dvc
}