Я получаю сбой при возврате заявления в numberOfRowsInSection UITableView после обновления - PullRequest
0 голосов
/ 19 октября 2018

Вот мой код, по которому я получаю данные из веб-службы на страницах по 10 записей на каждой:

func callService() {
    ProfileApiStore.shared.requestToGetProfile(loggedInUserId: UserStore.shared.userId, userId:  UserStore.shared.userIdToViewProfile, limit: "10", page: String(self.pageNumber), completion: {(result) in
        SVProgressHUD.dismiss()
        self.totalPages = result.totalPages!
        let newItems = result.userdata?.newPostData

        tableView.beingUpdates()
        for item in newItems {
            self.listData.append(item)
            let indexPath = IndexPath(row:(self.listData!.count-1), section:0) // shouldn't this be just self.listData!.count as your adding a new row?
            tableView.insertRows(at: [indexPath], with: .left)
        }
        tableView.endUpdates()
    })
}

Я получаю ошибку как:

Завершение работы приложениячтобы исключить исключение «NSInternalInconsistencyException», причина: «попытка вставить строку 10 в раздел 0, но в разделе 0 после обновления есть только 10 строк»

if listData != nil{
    print("list count in numberOfRowsInSection\(listData?.count)")
    return (listData?.count)!
}
return 0

Проблема возникла из-за следующих строк, в которых я пытался обновить высоту просмотра прокрутки из содержимого таблицы в контроллере дочернего представления:

if (UIApplication.visibleNavigationController.visibleViewController is UserPrfileControl){
            if (UIApplication.visibleNavigationController.visibleViewController as! UserPrfileControl).childControllerToUpdate == "userPost"{
                (UIApplication.visibleNavigationController.visibleViewController as! UserPrfileControl).commentViewHeight.constant = 0
                (UIApplication.visibleNavigationController.visibleViewController as! UserPrfileControl).burnedPostsHeight.constant = 0
                (UIApplication.visibleNavigationController.visibleViewController as! UserPrfileControl).userProfileViewHeight.constant = self.tableView.contentSize.height
            }
        }

1 Ответ

0 голосов
/ 19 октября 2018

Могу предположить, что когда вы выполняете callService() во второй раз, в вашем табличном представлении уже есть 10 строк, и вы пытаетесь добавить новые записи.Но представление UITable в данный момент не вызывает numberOfRowsInSection и не знает нового количества элементов в listData.Поэтому вы должны сказать UITable, что количество элементов изменилось, просто вызовите функцию UITableView.reloadData(), когда вы добавляете новые элементы в listData.

func callService() {
    ProfileApiStore.shared.requestToGetProfile(loggedInUserId: UserStore.shared.userId, userId:  UserStore.shared.userIdToViewProfile, limit: "10", page: String(self.pageNumber), completion: {(result) in
        SVProgressHUD.dismiss()
        self.totalPages = result.totalPages!
        let newItems = result.userdata?.newPostData

        for item in newItems {
            self.listData.append(item)
        }

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