2016-05-29 91 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 
}