现在,当我在电池上向左滑动以显示"最喜欢的"按钮并单击它,标签"收藏"出现在随机单元格而不是我刷过的单元格上。如何制作"收藏"当我点击指定的按钮时,标签在右侧单元格上出现/消失?
现在我在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"右边的单元格"收藏"
答案 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:
的通话。