无需调用didSelectRowAtIndexPath即可获取UITableViewCell数据

时间:2016-06-14 19:44:59

标签: ios swift uitableview

我有一个UITableView,每个单元格都与一个文件相关联。我正在使用自定义tableview单元格来显示文件标题,并且每个单元格都有一个编辑UIButton,它可以设置为另一个允许用户编辑文件标题的视图控制器。我的问题是,当我点击编辑按钮时,我不确定如何将与单元格关联的文件数据发送到下一个视图控制器,因为未调用didSelectRowAtIndexPath

struct Files {
    var title: String?
    var username: String?
    var url: String?
    var fileId: Int?
    var userId: Int?
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = self.fileTable.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! FileCell

    let file = self.tableFiles[indexPath.row]
    cell.fileLabel.text = file.title
    cell.userLabel.text = file.username

    cell.editButton.addTarget(self, action:#selector(HomeController.editPressed), forControlEvents: UIControlEvents.TouchUpInside)

    return cell
}

func editPressed() {

    self.performSegueWithIdentifier("HomeToEdit", sender: nil)

}

2 个答案:

答案 0 :(得分:0)

将editPressed更改为:

func editPressed(sender: UIButton!) {...}

当你选择添加为目标

时,你需要添加:

您可以通过调用sender.superView找到该按钮的父单元格。将其转换为FileCell,然后您可以访问它的fileLabel.text,如果这足够的话。如果没有,您可以通过调用indexPathForCell找到单元格的索引。

答案 1 :(得分:0)

更改编辑按钮选择器,使其获取参数。该参数将是您点按的按钮。您可以获取按钮的frame.origin并查询表视图并找出包含该坐标的单元格。然后,您可以使用该单元格的索引路径来查找要传递下一个视图控制器的数据