2016-05-29 48 views
0

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

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

我想我可能会做这样的事情

 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,但我不知道,如果整体的应用性能将提前下降,由于视图控制器的增加

感谢所有帮助

+0

尝试'if if segue.destinationViewController is FirstViewController {'。或者'如果让dvc = segue.destinationViewController为? FirstViewController {'。 – vacawama

+0

感谢您的快速建议。那是因为我的unwind segue方法是通过ctrl拖动我的viewcontroller退出。所以如果segue.destinationViewController是FirstViewController {'对我来说是完美的,那么展开将退出'OptionViewController'到前面的viewcontroller,它可能是任何一个4' – Chris

+0

vacawama'。而不是'=='我应该使用'is'。请张贴它作为答案,以便我可以将其标记为答复谢谢! – Chris

回答

0

为了测试目的视图控制器是一个特定的类的,则使用关键字斯威夫特is

if segue.destinationViewController is FirstViewController { 

或者,也可以分配的viewController使用任选与OPTI结合可变onal cast

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