prepareForSegue目标TableViewController

时间:2016-04-20 22:25:27

标签: ios swift uitableview

我目前有一个按钮设置为TableViewController,但我决定将TableViewController嵌入到TabBarController中。在我这样做之前,我在之前的ViewController中使用了这段代码。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "showListSegue"){
        let des = segue.destinationViewController as! TableViewController
        des.jsonfile = self.jsonfile
    }
}

现在,当我尝试单击按钮时,它会给我这个错误。

  

无法转换类型' UITabBarController' (0x111c818b0)到   ' Forkit.TableViewController' (0x10d1b1490)。

我尝试了以下代码但没有成功,因为它给了我这个错误

  

类型的值" UITabBarController"没有会员' jsonfile'。

 let des = segue.destinationViewController as! TableViewController

我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:3)

segue <!DOCTYPE html> <html> <head> <title>Demo Croppie</title> <link rel="Stylesheet" type="text/css" href="http://foliotek.github.io/Croppie/croppie.css" /> <link rel="Stylesheet" type="text/css" href="http://t4t5.github.io/sweetalert/dist/sweetalert.css" /> </head> <body> <div id="vanilla-demo"></div> <div class="actions"> <button class="vanilla-result">Result</button> <button class="vanilla-save">Save</button> <button class="vanilla-rotate" data-deg="-90">Rotate Left</button> <button class="vanilla-rotate" data-deg="90">Rotate Right</button> </div> <div id="result"></div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="http://foliotek.github.io/Croppie/croppie.js"></script> <script src="http://t4t5.github.io/sweetalert/dist/sweetalert-dev.js"></script> </body> </html>现在有你的TabBarController,因为它是showListSegue。这就是它无法将其投射到destinationViewController的原因,因为它不是您正在寻找的那个。 TabBarController确实包含对您想要的ViewController的引用。您可能有两种选择:

1:使用TableViewController并在那里找到您的观点,如下所示:

.viewControllers

其中[0]选择您需要哪个选项卡的ViewController。

2:选择正确的标签并使用let tabBarController = segue.destinationViewController as! UITabBarController let des = tabBarController.viewControllers![0]

.selectedViewController

请注意,您在此处使用可选值,因此要么绝对确保您可以安全地解包,或者内置检查(使用let tabBarController = segue.destinationViewController as! UITabBarController tabBarController.selectedIndex = 0 // choose which tab is selected let des = tabBarController.selectedViewController! as?语句进行转换等)。< / p>

更多信息:UITabBarController Class Reference

答案 1 :(得分:-4)

试试这个

 @IBAction func about(sender: AnyObject) {
        performSegueWithIdentifier("about", sender: sender)
}