2015-02-18 69 views
26

所以我有一個prepareForSegue方法是這樣的:DestinationViewController Segue公司和UINavigationController的迅速

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "fromEventTableToAddEvent" { 

     let addEventViewController: AddEventViewController = segue.destinationViewController as! AddEventViewController 

     addEventViewController.newTagArray = newTagArray 

    } 
} 

然而,在運行時應用程序崩潰和日誌吐出這樣的信息:

無法投類型的值'UINavigationController'

出現此錯誤是因爲addEventController嵌入在導航控制器中,但我不確定我如何設置segue,以便destinationViewController設置爲NavigationController,但也允許我將prepareForSegue方法中的變量傳遞給addEventController。因此,如何使用Swift執行此操作?

我非常感謝您的幫助和時間,您可能會提供迴應。它很有幫助

回答

97

您只需要訪問導航控制器的topViewController,它將是AddEventViewController。這裏是代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "fromEventTableToAddEvent" { 

     let nav = segue.destinationViewController as! UINavigationController 
     let addEventViewController = nav.topViewController as! AddEventViewController 

     addEventViewController.newTagArray = newTagArray 

    } 
} 
+1

謝謝@Rdelmar,我有同樣的問題,你解決了它。 – mvasco 2015-05-31 04:24:23

+1

謝謝!簡單,容易。 – 2015-10-23 18:38:09

+0

swift 3的任何更新? – reggie 2017-01-24 15:39:26