【问题标题】:How do I segue values when my ViewController is embedded in an UINavigationController?当我的 ViewController 嵌入到 UINavigationController 中时,如何对值进行 segue?
【发布时间】:2015-06-20 21:19:25
【问题描述】:

我有两个视图控制器,它们通过 segue 和 prepareForSegue 方法来回发送值。在我决定将 ViewController 嵌入导航控制器之前,这对我来说一直很完美。

如果您查看下面的方法,您会发现问题是我的 destinationViewController 不再是 ViewController...它是我新创建的 UINavigationController。

TimeViewController.swift(二级控制器)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        var dest = segue.destinationViewController as! ViewController
        var min = selectedMinute * 60
        output = min + selectedSecond

        dest.returnedLabel = recievedString

        if cancelled == true {
            dest.returnedValue = 0
        } else {
            dest.returnedValue = output
        }

    }

一旦我的 ViewController 被嵌入到 UINavigationController 我得到这个错误:

Could not cast value of type 'UINavigationController' (0x1088ff698) to 'deleteCoreData.ViewController' (0x106a1f9b0).

因此,如果我将我的 destinationViewController 转换为 UINavigationController,我理所当然地无法访问我之前拥有的变量。这些变量是我在控制器之间保存数据的方式。

所以我的问题是:

当我的 ViewController 嵌入到 UINavigationController 中时,我如何分割值?

更新:这就是我的故事板的样子...

【问题讨论】:

    标签: swift uinavigationcontroller segue viewcontroller


    【解决方案1】:

    将其转换为 ViewController 对我来说效果很好。

    var dest = segue.destinationViewController as! ViewController
    

    你的 segue 连接应该是:

    【讨论】:

    • 发布的代码来自我的 TimeViewController,我将继续使用 ViewController。我会标记我的代码。
    • 它可以编译并运行,但是当我在 TimeViewController 中选择一个时间并尝试将变量传回时它会崩溃。说“无法转换 'UINavigationController' 类型的值”
    • 我试一试,顺便说一句,我添加了我的故事板的图片
    • 嗯....哦。这很奇怪。我已经尝试了几次,这次成功了。
    • 谢谢!如果你没有告诉我,我可能不会尝试再次将我的 segues 设置回视图控制器。我会一直在这整个晚上!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多