странная анимация tableView при использовании функции вставки

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

1
задан mahdi 14 April 2019 в 12:57
поделиться

2 ответа

Я думаю, что проблема в том, что loadMoreCells вызывается слишком много раз.

попробуйте использовать эту проверку вместо willDisplay:

if indexPath.row == yourArrayOfCells.count - 1{
    loadMoreCells()
}

ОБНОВЛЕНИЕ

Так что у меня есть некоторые из тех же проблем, после некоторых копаний я нашел это решение для себя:

//conform to UIScrollViewDelegate

let threshold : CGFloat = 10.0 // threshold from bottom of tableView
var isLoadingMore = false //checks if API session ended

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let contentOffset = scrollView.contentOffset.y
    let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;

    if !isLoadingMore && (maximumOffset - contentOffset) <= threshold {

        self.isLoadingMore = true
        DispatchQueue.main.async {
            loadMoreCells() 
            self.isLoadingMore = false
        }
    }
}

Если запрос API происходит слишком быстро и загрузка выглядит смешно, вы можете добавить задержку:

        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            loadMoreCells() 
            self.isLoadingMore = false
        }

Если это не сработает, я буду считать, что проблема не в коде, который вы предоставили.

UPDATE-2

Эти 2 функции в setUpCell () не являются необходимыми:

tableView.beginUpdates()
tableView.endUpdates()
0
ответ дан Vadim F. 14 April 2019 в 12:57
поделиться

Надеюсь, это поможет.

UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()

self.tableView.insertRows(at: indexPathsToBeInserted, with: UITableViewRowAnimation.none)

self.tableView.endUpdates()
UIView.setAnimationsEnabled(true)
0
ответ дан Ahmet A. 14 April 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: