如何为特定单元格分配标签?

时间:2016-11-26 19:17:14

标签: ios uitableview swift3 tableviewcell

现在,当我在电池上向左滑动以显示"最喜欢的"按钮并单击它,标签"收藏"出现在随机单元格而不是我刷过的单元格上。如何制作"收藏"当我点击指定的按钮时,标签在右侧单元格上出现/消失?

现在我在editActionsForRowAt函数中的代码是:

internal func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell

    let favorite = UITableViewRowAction(style: .normal, title: "Favorite") { action, index in
        cell.favoriteLabel.text = "Favorite"
        tableView.reloadRows(at: [indexPath], with: .none)
    }
    favorite.backgroundColor = UIColor.orange

    return [favorite]
}

问题在于设置" favoriteLabel" ="收藏"没有设置" favoriteLabel"右边的单元格"收藏"

1 个答案:

答案 0 :(得分:1)

你在这里采取了错误的做法。您应该更新数据模型,然后在索引路径重新加载单元格,而不是直接更新单元格。然后,您的Multipart multipart = new MimeMultipart(); MimeBodyPart attachPart = new MimeBodyPart(); String attachFile = "/storage/emulated/0/pic.jpg";//picture location DataSource source = new FileDataSource(attachFile); attachPart.setDataHandler(new DataHandler(source)); attachPart.setFileName(new File(attachFile).getName()); //Trick is to add the content-id header here attachPart.setHeader("Content-ID", "image_id"); multipart.addBodyPart(attachPart); //third part for displaying image in the email body attachPart = new MimeBodyPart(); attachPart.setContent("<h1>Attached Image</h1>" + "<img src='cid:image_id'>", "text/html"); multipart.addBodyPart(attachPart); //Set the multipart message to the email message message.setContent(multipart); Transport.send(message); System.out.println("Done"); 将根据更新的数据模型正确显示更新的单元格。

你实际上有两个奇怪的混合。您(错误地)尝试获取单元格,然后设置其标签,然后重新加载该行。别做这两件事。只需更新您的数据模型,然后重新加载该行。那就是它。

另外,请勿在{{1​​}}之外拨打cellForRowAt。如果您坚持使用当前的方法(可能在滚动后无法正常工作),则需要通过调用dequeueReusableCell来取代对cellForRowAt:的通话。