将数据从TableViewController传递到另一个嵌入容器中的TableViewController

时间:2016-06-09 11:24:57

标签: ios swift swift2

我无法将数据从TableViewController传递到TableViewController中嵌入的另一个Container View。当我在prepareForSegue中传递数据时,我遇到了“无法将UIViewController类型的值转换为TableViewControllerEmbeddedInContainer。我是否必须为容器创建文件ViewController并且在那里捕捉任何东西?非常感谢任何帮助。

enter image description here

在我的第一个TableViewController中:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

self.myFavText = "My Favorite Text"
self.performSegueWithIdentifier("favDetails", sender: self)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let myDetails = segue.destinationViewController as! TableViewControllerEmbeddedInContainer
details.myFav = self.myFavText

}

2 个答案:

答案 0 :(得分:1)

kampbell411,

"我是否必须为容器ViewController创建一个文件并捕获其中的任何内容?"

答案:是的。

"当我在prepareForSegue中传递数据时,我遇到一个"无法将类型' UIViewController的值转换为TableViewControllerEmbeddedInContainer'"

答案:你不能因为segue指向包含UIContainerView的ViewController而不是嵌入其中的ViewController:)

如何解决:)

为包含ContainerView的ViewController创建一个类。为ContainerView创建一个IBOutlet:)

让我们将其称为中级类,并将其视为myContainer:)

class Intermediate: UIViewController {

    @IBOutlet var myContainer: UIView!
    var value : String!


    //catch the embeded segue get the ViewController reference lets call it as Testing 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let test = segue.destinationViewController as! Testing
        test.value = self.value
    }
}

这应该有帮助:)

答案 1 :(得分:0)

使用此代码,

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
       self.myFavText = "My Favorite Text"
       self.performSegueWithIdentifier("favDetails", sender: self)

}

您将传递Container ViewController类中的值,然后将值分配给TableViewControllerEmbeddedInContainer类。

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

    if (segue.identifier == "favDetails") {

       var myDetails = segue.destinationViewController as! ContainerViewController
       myDetails.myFav = self.myFavText 

    }
}

希望它有所帮助。