我目前有一个按钮设置为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中的变量)请帮忙。谢谢。
答案 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
}
}