如何从子视图控制器prepareForSegue传递数据以更改父视图控制器tableview的单元格标题?
我这样做了,但我不认为这是对的:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "unwindToCreateTask" {
let contact = contactList[self.tableView.indexPathForSelectedRow()!.row]
let destinationVC = segue.destinationViewController as! CreateTaskVC
destinationVC.tableView.reloadData()
if let destinationCell = destinationVC.tableView.dequeueReusableCellWithIdentifier("assignToCell") as? UITableViewCell {
destinationCell.textLabel?.text = contact.contactName
destinationCell.detailTextLabel?.text = contact.contactEmail
}
}
}
答案 0 :(得分:0)
您的子视图控制器不应该知道其父视图的实现。您正在从子项进入父项的表视图,但父项从子项访问所需数据更为正确。展开segues允许您通过在父级中定义展开方法来完成此操作。
在您的父级中,您定义了一个UIStoryboardSegue
方法,该方法只需一个UIStoryboardSegue
参数。这是在segue开头的父母那里调用的,并允许你传回"以防止委托需要的方式向父级提供任何数据。 sourceViewController
具有@IBAction func unwindToParent(segue: UIStoryboardSegue) {
if let childVC = segue.sourceViewController as? ChildVC {
// update this VC (parent) using newly created data from child
}
}
属性,因此在展开segue的情况下,子项是源。
let dateString = "\(components.year)\(components.day)\(components.month)"
println("dateString: \(dateString)")
定义方法后,您可以通过控制从子场景中的触发元素拖动到"退出"来创建故事板中的segue。该场景顶部的图标。从显示的菜单中,选择您刚刚在父级中创建的展开操作。