UITableView несколько конфликтов разделов при прокрутке

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
0
задан Bhavesh Nayi 11 April 2019 в 09:31
поделиться

2 ответа

У вас проблема с повторным использованием ячеек.

По сути, происходит то, что tableView создает только столько ячеек, сколько видимых на экране, и как только ячейка прокручивается из поля зрения, она снова используется для другого элемента в вашем источнике данных.

Причина, по-видимому, исчезновения кнопок в том, что вы уже удалили кнопку ранее, но теперь, при повторном использовании, не сказали ячейке снова показывать кнопку.

Исправить это легко, просто добавьте:

cell.addButtonOutlet.alpha = 0

в свои секции 0 и 2 (еще блок).

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

if let imgid = img {
    let url = MTApi.url(for: imgid, size: .normal)
    cell.userImageView.sd_setImage(with: url, placeholderImage: nil, options: [], completed: nil)
} else {
    cell.userImageView.image = nil
}
0
ответ дан Adis 11 April 2019 в 09:31
поделиться
    var name: String = ""
    var job: String = ""
    var company: String = ""
    var img: Int?

    cell.userImageView.layer.cornerRadius = 45
    cell.userImageView.clipsToBounds = true
    cell.addButtonOutlet.alpha = 1   // add more
    if indexPath.section == 0 {
     ........

и вам следует изучить возможность повторного использования UITableviewCell.

0
ответ дан Nguyen Hoan 11 April 2019 в 09:31
поделиться
Другие вопросы по тегам:

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