单击表格单元格时将变量值发送到下一个视图控制器
Posted
技术标签:
【中文标题】单击表格单元格时将变量值发送到下一个视图控制器【英文标题】:Send variable value to next view controller when click a table cell 【发布时间】:2015-11-11 19:59:56 【问题描述】:我有两个表视图控制器
InvoiceList
视图控制器
InvoiceShow
视图控制器
我使用didSelectRowAtIndexPath
方法如下获取选定的表格单元格特定值
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
let rowObject = objects[indexPath.row]
let invoicehash = rowObject["hash_key"]!
单击InvoiceList
的表格单元格时,我需要将invoicehash
值发送到InvoiceShow
控制器
我尝试使用prepareForSegue
函数。但它不适用,因为它会在didSelectRawAtIndexPath
函数之前触发。所以当我实现它时,给出之前的点击事件变量值。不正确。
请帮我从InvoiceShow
控制器访问invoiceHash
变量值
【问题讨论】:
【参考方案1】:您将在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
【讨论】:
【参考方案2】:如果您愿意和/或已经在情节提要上设置,您仍然可以使用转场。 您只需将 Interface Builder 中的两个视图控制器直接从一个连接到另一个。 所以,从控制器本身而不是从 TableViewCell 开始 ctrl 拖动(看看截图)
然后将 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
就是这样!
【讨论】:
以上是关于单击表格单元格时将变量值发送到下一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章