【问题标题】:DestinationViewController Segue and UINavigationController swiftDestinationViewController Segue 和 UINavigationController swift
【发布时间】:2015-04-18 20:45:46
【问题描述】:

所以我有一个这样的 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 来做到这一点?

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

【问题讨论】:

    标签: ios swift segue


    【解决方案1】:

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

    【讨论】:

    • 谢谢!简单,轻松。
    • @reggie Swift 3 几乎是一回事。让 nav = segue.destination 为! UINavigationController 让 topicVC = nav.topViewController 为! TopicsViewController
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多