我有两个表视图控制器
InvoiceList
查看控制器InvoiceShow
查看控制器我使用didSelectRowAtIndexPath
方法来获取选定的表格单元格特定值
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let rowObject = objects[indexPath.row]
let invoicehash = rowObject["hash_key"]!
}
点击invoicehash
的表格单元格后,我需要向InvoiceShow
控制器发送InvoiceList
值
我尝试使用prepareForSegue
功能。但它不适用,因为它会在didSelectRawAtIndexPath
函数之前触发。所以当我实现它时,给出前一个click事件变量值。不正确的。
请帮助我从invoiceHash
控制器
InvoiceShow
变量值
答案 0 :(得分:2)
如果您想要和/或已经在故事板上设置,您仍然可以使用segue。 您只需将Interface Builder中的两个视图控制器直接从一个连接到另一个。 所以,从控制器本身开始ctrl-dragging而不是从TableViewCell开始(看一下截图)
然后将performSegueMethod与新的segue标识符一起使用,如下所示:
self.performSegueWithIdentifier("mySegueIdentifier", sender: self)
最后,你的prepareForSegue方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "mySegueIdentifier" {
let selectedIndex = self.invoiceTableView.indexPathForSelectedRow
//if element exist
if selectedIndex?.row < myDataSourceArray.count {
let destination = segue.destinationViewController as! InvoiceShowViewController
let invoice = myDataSourceArray[selectedIndex!.row]
destination.invoice = invoice
}
}
}
那就是它!
答案 1 :(得分:2)
您将在prepareForSegue
方法本身中获取所选单元格。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let selectedIndexPath = self.tableView.indexPathForSelectedRow()!
let rowObject = objects[selectedIndexPath.row]
let invoiceHash = rowObject["hash_key"]!
let invoiceShowViewController = segue.destinationViewController as! InvoiceShowViewController
// Set invoiceHash to `InvoiceShowViewController ` here
invoiceShowViewController.invoiceHash = invoiceHash
}