uitableview прокрутка вверх при первой загрузке данных - PullRequest
1 голос
/ 26 сентября 2019

Я использую reloadData () для загрузки данных просмотра таблицы, но мое представление таблицы при первой загрузке прокручивается вверх при загрузке данных примерно так ... , и это не очень приятно для пользователя.Кто-нибудь из вас знает решение, ребята, чтобы остановить это поведение.Спасибо за помощь !Я получаю пользователей из firebase и загружаю изображения следующим образом:

 func getUsersFromFirebase(){
    refUsers.observeSingleEvent(of: .value, with: { (snapshot) in
        let usersNbr = snapshot.childrenCount
        var counter = 0
        var newUsers: [User] = []
        for item in snapshot.children {
            counter = counter + 1
            let newitem:DataSnapshot = item as! DataSnapshot
            let user = User(snapshot: item as!DataSnapshot,uid:newitem.key.description)
            var newWishlists:[WishList]=[]                self.refProducts.child(newitem.key.description).observeSingleEvent(of : DataEventType.value, with: { (snapshot) in
                for item in snapshot.children {
                    let newItem:DataSnapshot = item as! DataSnapshot
                    let newWishlist=WishList.init(snapshot: newItem)
                    if(newWishlist.products.count != 0 && !newWishlist.name.trimmingCharacters(in: .whitespaces).isEmpty){
                        newWishlists.append(newWishlist)
                    }
                }
                user.wishLists=newWishlists
                if(!(user.name=="" || user.image=="" ) ){
                    print("user privacy 1: " + user.isPrivate.description)
                    if(!user.isPrivate && user.wishLists.count != 0){
                        if(!user.isPrivate){
                            newUsers.append(user)
                        }
                    }
                }
                    self.firebaseUsers = newUsers.shuffled()
                    GlobalVar.isAppFirstLoad=false

                    GlobalVar.allUsers = self.firebaseUsers
                    DispatchQueue.main.async {
                        self.reload(tableView: self.usersTableView)
                        print("user tableview reloaded 1")
                    }

            })

        }

    }) { (error) in
        print(error.localizedDescription)
        MBProgressHUD.hideAllHUDs(for: self.usersTableView, animated: true)
    }
}
    func reload(tableView: UITableView) {
        let contentOffset = tableView.contentOffset
        tableView.reloadData()
        tableView.layoutIfNeeded()
        tableView.setContentOffset(contentOffset, animated: false)

    }

Я нашел хитрость и ее .shuffled (), которая вызывает поведение, которое, я думаю, массив все еще тасует, когда табличное представление перезагружаетданные.Так кто-нибудь из вас знает, как проверить, что массив закончил перемешивать?

1 Ответ

0 голосов
/ 26 сентября 2019

Так что, если вы отметите свой код, у вас будет флаг

 GlobalVar.isAppFirstLoad=false

Если вы думаете с общим смыслом, почему он существует?Вы должны проверить, содержит ли условие, которое содержит GlobalVar.isAppFirstLoad это значение как true, и в его блоке будет некоторый код, который будет прокручивать tableView к началу.

Найдите и удалите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...