DestinationViewController Segue和UINavigationController swift [英] DestinationViewController Segue and UINavigationController swift

查看:193
本文介绍了DestinationViewController Segue和UINavigationController swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有这样的prepareForSegue方法:

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

让addEventViewController:AddEventViewController = segue.destinationViewController as! AddEventViewController

addEventViewController.newTagArray = newTagArray

}
}

但是,在运行时,应用程序崩溃并记录此消息:


无法转换类型的值' UINavigationController'


错误的发生是因为addEventController嵌入在导航控制器中,但是我不知道如何设置segue以便将destinationViewController设置为NavigationController,但也允许我将prepareForSegue方法中的变量传递给addEventController



那么我将如何使用Swift执行此操作? / p>

非常感谢您提供的帮助和时间作为回应。它有很多帮助

解决方案

您只需要访问导航控制器的topViewController,它将是AddEventViewController。下面是代码:

 覆盖func prepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){
if segue。 identifier ==fromEventTableToAddEvent{

让nav = segue.destinationViewController为! UINavigationController
让addEventViewController = nav.topViewController为! AddEventViewController

addEventViewController.newTagArray = newTagArray

}
}


So I have a prepareForSegue method like this:

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

        let addEventViewController: AddEventViewController = segue.destinationViewController as! AddEventViewController

        addEventViewController.newTagArray = newTagArray

    }
}

However, at runtime the app crashes and logs spit out this message:

Could not cast value of type 'UINavigationController'

The error comes because the addEventController is embedded in a navigation controller, however I'm not sure how I would set up the segue so that the destinationViewController is set to the NavigationController, but also allow me to pass variables in the prepareForSegue method to the addEventController

So how would I do this using Swift?

I extremely appreciate your help and time you may offer in response. It helps alot

解决方案

You only need to access the navigation controller's topViewController, which will be the AddEventViewController. Here is the code:

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

    }
}

这篇关于DestinationViewController Segue和UINavigationController swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆