迅捷:Table View Cell执行到两个不同目的地的隔离

时间:2018-07-30 02:04:48

标签: ios swift uitableview

我的问题: 我想在表视图单元格中对两个不同的目标执行segue。一种是通过单击didSelectRowAt处理的单元格来定向目标“ A”,另一种是通过单击该单元格内的按钮(例如,labelName)定向到目标“ B”。

对于目标“ B”,我尝试使用(btn.addTarget),但是它无法添加参数,因此目标视图控制器不知道单击了哪个单元格。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以使用button.tag并将每个按钮的标签分配给indexpath.row

button.tag = indexPath.row
button.addTarget(self, action: "btnClick:", forControlEvents: UIControlEvents.TouchUpInside)

func btnClick(sender:UIButton) {
    let buttonRow = sender.tag
}

快速4:

  button.addTarget(self, action: #selector(händlerButtonTapped), for: .touchUpInside)

    @objc func händlerButtonTapped(sender:UIButton) {
       let buttonRow = sender.tag
    }

答案 1 :(得分:0)

您可以使用此方法在btnClick函数中获取所选TableviewCell的indexPath。

let index = self.tableview.indexPathForSelectedRow

现在通过执行此操作可以解决您提到的问题。

  

destinatin视图控制器不知道单击了哪个单元格

答案 2 :(得分:0)

这是我的cellForRowAt:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! contentTableViewCell

    let content: contentModel
    content = contentList[indexPath.row]
    contentViewController().getUserProfilePic(userID:content.userID!)
    cell.detailLabelName.text = content.name
    cell.detailLabelTime.text = content.time
    cell.detailTextViewContent.text = content.content

    if UserDefaults.standard.data(forKey:content.userID!) != nil {
        cell.detailImageSelfie.image = UIImage(data:UserDefaults.standard.data(forKey:content.userID!)!)
    } else {
        cell.detailImageSelfie.image = #imageLiteral(resourceName: "defaultIcon")
    }
    return cell
}