我在swift中有1个viewController和1个tableViewController。我可以从viewController发送一个NSMutableArray来使用segue填充tableViewController。我不知道如何将选定的行发送回视图控制器。到目前为止的代码:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")
// Missing code for sending back the selected row
self.dismissViewControllerAnimated(true, completion: nil)
}
有什么想法吗?
答案 0 :(得分:3)
您可以使用委派模式。创建协议:
protocol MyDataDelegate {
didSelectRow(row: NSIndexPath, data: MyData)
}
在表格控制器中,添加一个属性:
var myDataDelegate: MyDataDelegate?
并在didSelectRowAtIndexPath
中调用委托方法:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")
let data = getDataForRow(indexPath) // <== You need to implement it
self.myDataDelegate?.didSelectRow(indexPath, data: data)
self.dismissViewControllerAnimated(true, completion: nil)
}
接下来,在主视图控制器中:
MyDataDelegate
协议myDataDelegate
属性设置为self 这样,当在表控制器中选择一行时,在主视图控制器上调用didSelectRow
方法,因此您可以使用索引路径和/或数据执行任何操作。
当然可以随意更改didSelectRow
签名(使用索引路径,行索引,有或没有数据等)。