所以我有一个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。