firebase remove value导致tableview重新加载double元素

时间:2017-09-05 03:28:43

标签: ios swift uitableview firebase

我的应用程序上有一个简单的通知页面,我在应用程序中设置了朋友请求,当发出好友请求或消息的通知时,它会被添加到接收者消息页面。当用户选择拒绝好友请求时,警报视图将被解除,但随后桌面视图将重新加载两倍的项目,同样用于接受。单击接受或拒绝后,我没有调用重新加载它的函数。我已经尝试了一切,希望能得到一些帮助。这是一些正在发生的代码和照片。请注意,我在viewdidload中调用了用于获取通知的pull()函数,并且没有viewdid出现的viewwillappear函数被调用。 pull函数是一个基本的firebase循环提取,它将它放入通知数组中。

当前代码:检查是否是好友请求,取消segue消息并显示提醒视图

    override func shouldPerformSegue(withIdentifier identifier: String,   sender: Any?) -> Bool {
    if identifier == "segueNotify" {
        let index = tableViewNotifications.indexPathForSelectedRow!
        if let friendReques = notifications[index.row].friendRequest {
   let decline = UIAlertAction(title: "Decline", style: .default, handler: { (action : UIAlertAction!) -> Void in
                if let myuid = self.uid {
                    if let key = self.notifications[index.row].key {
                        let ref = FIRDatabase.database().reference()                       

   ref.child("users").child(myuid).child("Notifications").child(key).removeValue()

                    }
                }
   // this does not work, does the same thing :
   // self.notifications.removeAll()
             //self.tableViewNotifications.reloadData()
               //self.pull()
            })

            let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
            alert.addAction(cancel)
            alert.addAction(accept)
            alert.addAction(decline)
            self.present(alert, animated: true, completion: nil)
            return false
        }
    }
    return true

只需点击tommy的消息即可 First

点击接受/拒绝后 After clicking accept

1 个答案:

答案 0 :(得分:0)

我在接受和拒绝功能之后添加了这个:

  • self.notifications.removeAll()

  • self.tableViewNotifications.reloadData()