Я использую NavigationController, чтобы показать список подписчиков определенного пользователя.В этом списке (UITableView) есть изображение профиля, имя пользователя, а справа - кнопка «следовать» или «отписаться».
Мне удалось реализовать функцию, которая проверяет, подписан ли уже пользователь,так что это ясно показывает, следовать или отписаться как следует.Я также могу обновить кнопку после того, как пользователь начинает подписываться на другого пользователя, и то же самое касается отмены подписки.
Однако можно нажать на имя пользователя или на изображение профиля, после чего я нажимаю NavigationControllerк профилю пользователя, который был нажат.
navViewController?.pushViewController(userVC, animated: true)
На странице профиля есть та же кнопка подписки или отмены подписки, с той же логикой (но немного адаптированная, так как мне не нужны indexPaths на странице профилятак далее).Все работает, за исключением того, что когда я захожу на чью-либо страницу профиля из списка, начинаю подписываться или отменять подписку и использую кнопку «Назад» на моем NavigationController, чтобы вернуться к списку.Он по-прежнему показывает текст, указанный ранее, и применяет неправильную логику (если я откажусь от профиля, вернусь и откажусь от списка (что не должно быть возможно, но кнопка еще не обновлена), я создаю двойное отписывание, сортировкаof говорить.
Я ищу способ обновить кнопку в предыдущем представлении (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!