web-dev-qa-db-ja.com

DestinationViewController SegueおよびUINavigationController swift

したがって、次のようなprepareForSegueメソッドがあります。

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

        let addEventViewController: AddEventViewController = segue.destinationViewController as! AddEventViewController

        addEventViewController.newTagArray = newTagArray

    }
}

ただし、実行時にアプリがクラッシュし、次のメッセージが吐き出されます。

タイプ 'UINavigationController'の値をキャストできませんでした

エラーは、addEventControllerがNavigation Controllerに埋め込まれているため発生しますが、destinationViewControllerがNavigationControllerに設定されるようにセグエを設定する方法がわかりませんが、prepareForSegueメソッドの変数をaddEventControllerに渡すこともできます

それでは、Swiftを使用してこれをどのように行うのでしょうか?

あなたの助けとあなたがそれに応じて提供する時間を非常に感謝します。それはたくさん助けます

28
YichenBman

AddEventViewControllerとなるNavigation ControllerのtopViewControllerにアクセスするだけです。コードは次のとおりです。

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

    }
}
104
rdelmar