我正在使用firebase。我的代码工作但我的问题是当我按下接受按钮时,我希望从collectionView中删除该索引,我希望该表立即重新加载。我不能使用幻灯片删除,因为我需要它用于其他功能。
这是在我的单元类中,这就是为什么我没有使用self.
来调用collectionView。此函数由addTarget()
方法调用。我想可能会将indexPath作为参数传递,但我不知道如何将indexPath.item作为参数传递,以及如何在addTarget()方法中传递参数。
func handleAccept(_ sender: UIButton) {
print("button pressed")
guard let artId = art?.artId else {return}
let approvedRef =
FIRDatabase.database().reference().child("approved_art")
approvedRef.updateChildValues([artId: 1])
let pendingRef =
FIRDatabase.database().reference().child("pending_art").child("\(artId)")
pendingRef.removeValue { (error, ref) in
if error != nil {
return
}
let layout = UICollectionViewFlowLayout()
let pendingArtCollectionViewController =
PendingArtsCollectionViewController(collectionViewLayout: layout)
DispatchQueue.main.async {
pendingArtCollectionViewController.collectionView?.reloadData()
}
}
}
答案 0 :(得分:0)
您不需要将indexpath作为参数传递,您可以使用以下代码获取tableView in button action的索引路径:
func handleAccept(_ sender: UIButton) {
let center = sender.center
let rootViewPoint = sender.superview!!.convert(center!, to: self.myTableView)
let currentIndexpath = myTableView.indexPathForRow(at: rootViewPoint)
}