类型的价值' UIViewController'没有会员' jsonfile'命名为JSON

时间:2016-04-22 21:30:37

标签: ios swift cocoa-touch swifty-json

我目前有一个按钮设置为TableViewController,但我决定将TableViewController嵌入到TabBarController中。我在尝试将其传递给UITabBarController时遇到错误。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "showListSegue") {
        let tabBarController = segue.destinationViewController as! UITabBarController
        tabBarController.selectedIndex = 0 // choose which tab is selected
        let des = tabBarController.selectedViewController!
        des.jsonfile = self.jsonfile
    }
}

在最后一行代码des.jsonfile = self.jsonfile中,我收到了错误...

  

类型的价值' UIViewController'没有会员' jsonfile'

我正在尝试将jsonfile传递给现在嵌入在UITabBarController中的TableViewController。如何才能做到这一点?我在TableViewController中有这个变量被传递给了但是现在我把这个TabBarController扔进混合中我感到很困惑。

我还尝试为TabBarcontroller创建一个Cocoa文件并设置变量var jsonfile : JSON!,但这也不起作用。 (这是我想要传递给我的TableViewController中的变量)请帮忙。谢谢。

1 个答案:

答案 0 :(得分:1)

您需要让编译器知道selectedViewController是一个成员jsonFile的类型。此外,您应该在运行时检查它实际上是否存在以及正确的类。以下是您应该使用的模式:

class JSONDisplayController: UIViewController {
    var jsonfile: String
}

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "showListSegue") {
        guard let tabBarController = segue.destinationViewController as? UITabBarController else {
            preconditionFailure("Unexpected destination.")
        }

        tabBarController.selectedIndex = 0 // choose which tab is selected
        guard let des = tabBarController.selectedViewController as? JSONDisplayController else {
            preconditionFailure("Unexpected selection.")
        }

        des.jsonfile = jsonfile
    }
}