单击表格单元格时将变量值发送到下一个视图控制器

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
        
    

就是这样!

【讨论】:

以上是关于单击表格单元格时将变量值发送到下一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

按下表格单元格时将视图加载到导航视图控制器中

单击表格视图单元格时加载缓慢

为啥在制作自定义表格视图单元格时将可重用单元格出列两次

表格视图单元格中的集合视图

在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动

在单击表格单元格时推送新视图,这怎么可能? [关闭]