DestinationViewController Segue and UINavigationController s



所以我有一个prepareForSegue方法,如下所示:

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呢?

我非常感谢您的帮助和时间。它对有很大帮助

您只需要访问导航控制器的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
    }
}

所有明确需要的就是从segue.destination类中创建一个对象,并将其向下转换到所需的ViewController。

最新更新