我使用下面的代码向评论部分添加临时评论。它曾经可以正常工作,但是由于某些原因,每当我点击带有以下代码的添加注释按钮时,就会添加2个单元格。
为什么会这样,我该如何解决?
@IBAction func AddCommentButton(_ sender: Any) {
fetchCurrentUsersInfo() {
self.addComment() {
self.tableView.beginUpdates()
let cell = self.tableView.dequeueReusableCell(withIdentifier: "commentCell", for: [self.arrayOfComments.count]) as! commentTableViewCell
self.tableView.insertRows(at: [NSIndexPath(row: self.arrayOfComments.count-1, section: 0) as IndexPath], with: .automatic)
self.addTemporaryComment(cell: cell)
self.tableView.endUpdates()
self.addCommentTextField.text = ""
}
}
}
我发现每次添加注释时,都会运行baseVC内部的此方法:
@objc func CommentsTapped(_ tap: UITapGestureRecognizer) {
//Bring up the comments view and load all data into it.
p3CommentContainer.isHidden = false
self.commentsVC1.commentCellDelegate!.updateP3CommentSheet(frame: self.initalFrame.offsetBy(dx: 0, dy: 900))
self.arrayOfComments.removeAll()
self.commentsVC1.tableView.reloadData()
UIView.animate(withDuration: 0.2, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.9, options: .curveEaseOut, animations: {
self.loadComments({
print("compelted?")
self.commentsVC1.tableView.reloadData()
})
})
self.commentsVC1.commentCellDelegate!.updateP3CommentSheet(frame: self.initalFrame.offsetBy(dx: 0, dy: 180))
self.commentsVC1.selectedMedia = self.selectedPost?.interimMedia[self.numberMedia]
self.commentsVC1.numberMedia = self.numberMedia
}
我不知道为什么会这样,我无法找到阻止它运行的方法...但是我认为这就是重复注释单元格的原因
我注释掉了临时注释代码,即使这样重复也发生了...
我发现取消注释的代码并使用我的旧方法可以正常工作,而使用单个查询版本时却无法。但是,我需要此版本,因为我的后端代码需要所有数据都在其中才能创建通知。
为什么会这样,我该如何解决?
refrence.updateChildValues(newData)
// refrence.updateChildValues(["UID" : Auth.auth().currentUser?.uid])
// refrence.updateChildValues(["Comment" : "\(newComment!)"])
// refrence.updateChildValues(["timeStamp" : Date().timeIntervalSinceReferenceDate])
答案 0 :(得分:2)
删除dequeueReusableCell
行。无论如何,这都是荒谬的。
其他改进:
begin-/endUpdates
addCommentButton
)IndexPath
,而无需桥接cellForRowAt
中分配@IBAction func addCommentButton(_ sender: Any) {
fetchCurrentUsersInfo() {
self.addComment() {
self.tableView.insertRows(at: [IndexPath(row: self.arrayOfComments.count-1, section: 0)], with: .automatic)
// self.addTemporaryComment(cell: cell)
self.addCommentTextField.text = ""
}
}