首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在单击UITableviewCell中的按钮后传递值?

如何在单击UITableviewCell中的按钮后传递值?
EN

Stack Overflow用户
提问于 2016-11-22 16:00:25
回答 2查看 36关注 0票数 0

TableView中有一个ViewControllerTableViewCell有一个包含一些内容的textView。现在,在单击replyButton后,在一个cell中,seguesecondViewController。我需要将内容放在textView of cell中。该怎么做呢?下面我使用indexPath作为代码,但是它崩溃了,因为indexPathnil。谢谢你的帮助。

说明:我需要单击单元格内的replyButton来实现目标,而不是使用didSelectRowAtIndexPath函数。

代码:

代码语言:javascript
代码运行次数:0
运行
复制
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


  @IBAction func replyButtonTapped(_ sender: Any) {

   self.performSegue(withIdentifier: "toReplyVC", sender: self)

}


  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "toReplyVC" {

        let replyVC = segue.destination as! ReplyVC

  // code below did't work: 

   /*

         let indexPath = self.repliesTableView.indexPathForSelectedRow

            let cell = self.repliesTableView.cellForRow(at: indexPath!) as! ReplyCell

            replyVC.replyQuote = cell.replyTextView.text

    */    
       }
 }


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-22 19:45:56

您需要使用协议,在Replycell.swift中,在类之前添加以下内容

代码语言:javascript
代码运行次数:0
运行
复制
protocol ReplycellDelegate: class {
func didPressButtonFromCell(cellView: Replycell, id: int)}

在类中添加以下内容

代码语言:javascript
代码运行次数:0
运行
复制
weak var delegate: ReplycellDelegate?

在单元格中的按钮操作中添加以下内容

代码语言:javascript
代码运行次数:0
运行
复制
delegate?.didPressButtonFromCell(cellView: self, id: 2)

现在在类ViewController中,在uitableview数据源之后添加RepplyCellDelegate,然后只调用函数didPressButtonFromCell,Xcode将为您自动完成该函数,当按下单元格的按钮时将调用该函数,如果视图控制器中有单元格的内容,则向Repplycell类添加一个id变量,以便在创建每个单元格时将其传递给每个单元格,如果您在Replycell类中获得文本,而不是协议中的id,则声明一个字符串并将其发送给ViewController。

票数 0
EN

Stack Overflow用户

发布于 2016-11-22 16:12:31

试图获取文本值的方式并没有多大问题,您只是在错误的函数中这样做。UITableView有一个函数didSelectRowAt:indexPath,它将在其中工作。

代码语言:javascript
代码运行次数:0
运行
复制
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let cell = tableView.cellForRow(at: indexPath) as! Replycell
        replyVC.replyQuote = cell.replyTextView.text


    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40746404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档