我正在使用NavigationController显示某个用户的关注者列表。在此列表(UITableView)中,有个人资料图片,用户名,最右边是“跟随”或“取消关注”按钮。
我设法实现了一个功能,该功能可以检查用户是否已经关注,因此可以清楚地显示关注或不关注。在一个用户开始关注另一个用户之后,我也能够更新按钮,并且取消关注也是如此。
但是,可以单击用户名或个人资料图片,然后将NavigationController推到被单击的用户的个人资料上。
navViewController?.pushViewController(userVC, animated: true)
在配置文件页面上是相同的“跟随”或“取消关注”按钮,具有相同的逻辑(但略有改动,因为我不需要在配置文件页面上使用indexPaths等)。一切正常,除非我从列表中进入某人的个人资料页面,然后开始关注或取消关注,然后使用NavigationController上的“后退”按钮返回列表。它仍然显示之前的文本并应用错误的逻辑(如果我取消关注个人资料,请在列表中返回并取消关注(这不可能,但按钮尚未更新),我创建了一个双重取消关注,排序的话。
我正在寻找一种更新上一个视图(UITableView)上的按钮的方法。有任何想法吗?我不能使用.observe而不是.observeSingleEvent,因为这将创建一个跟随和取消跟随的循环,因为获取列表的代码如下:
func getUsers() {
var Ref: DatabaseReference!
Ref = Database.database().reference()
Ref.child("users").queryOrdered(byChild: "userLastName").observeSingleEvent(of: .value) { (snapshotUsers) in
for child in snapshotUsers.children {
let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
if(snap.key != Auth.auth().currentUser?.uid) {
Ref.child("users").child(snap.key).child("userFollowers").child((Auth.auth().currentUser?.uid)!).observeSingleEvent(of: .value) { (checkFollow) in
if checkFollow.exists() {
self.myArray.append(usersToFollow(userID: snap.key, userName: (dict["userFirstName"] as! String) + " " + (dict["userLastName"] as! String), userFirstName: (dict["userFirstName"] as! String), userLastName: (dict["userLastName"] as! String), userProfilePicURL: (dict["userProfilePicURL"] as! String), isFollowing: true))
} else {
self.myArray.append(usersToFollow(userID: snap.key, userName: (dict["userFirstName"] as! String) + " " + (dict["userLastName"] as! String), userFirstName: (dict["userFirstName"] as! String), userLastName: (dict["userLastName"] as! String), userProfilePicURL: (dict["userProfilePicURL"] as! String), isFollowing: false))
}
self.myTableView.reloadData()
}
}
}
}
}
在我的UITableView中如何解决此问题的任何帮助将不胜感激!
答案 0 :(得分:0)
您可以简单地使用NSNotification来调用tableView.reloadData(): 将此添加到您的tableView Controller(TVC)ViewDidLoad:
NotificationCenter.default.addObserver(self, selector: #selector(reload), name: NSNotification.Name(rawValue: "load"), object: nil)
此功能可用于您的TVC
@objc func reload()
{
//setup ur new data
self.tableView.reloadData()
}
然后只需将其添加到用户pf VC中的后退按钮IBAction中
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)