我无法将数据从TableViewController
传递到TableViewController
中嵌入的另一个Container View
。当我在prepareForSegue
中传递数据时,我遇到了“无法将UIViewController
类型的值转换为TableViewControllerEmbeddedInContainer
。我是否必须为容器创建文件ViewController
并且在那里捕捉任何东西?非常感谢任何帮助。
在我的第一个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
}
答案 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
}
}
希望它有所帮助。