Изображение повторяется при вставке данных Firestore - PullRequest
1 голос
/ 05 июня 2019

Я создал небольшой "центр уведомлений" в виде таблицы. Но каким-то образом изображение повторяется, и это не так, как должно быть.

Я не могу выяснить причину этого самостоятельно, поэтому я прошу вас, ребята, о помощи.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let listPath = list[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
    cell.setCell(list: listPath) 

    print(cell.note.text!)

     //THIS ONE
    if cell.note.text!.isEmpty == false
    {
        cell.noteImg.isHidden = false
    }


    return cell
}

Это часть кода, который я имею. Итак, позвольте мне объяснить, как это на самом деле работает.

Каждый раз, когда пользователь добавляет данные в специальное текстовое поле, они должны добавляться в «заметки» в Firestore. Я выбираю все из Firestore, чтобы вставить данные в UITableView, и ЕСЛИ «заметки» не пустые. Мое изображение должно быть видно.

Результат, который я получаю сейчас: Это добавит многократно даже со значением ноль.

img

Итак, как вы можете видеть на картинке. Первое (1) правильно. (Тот, в 12:55) но второй НЕ должен быть там, он просто добавляется случайно.

Я действительно надеюсь, что вы понимаете, было не так просто сделать это коротким и организованным.


Изменить:

 func setCell(list: listTxt){
    DogName.text = list.dog
    Person.text = list.person
    Action.text = list.action
    Date.text = list.date
    Time.text = list.time
    timer.text = list.timer
    kilometer.text = list.kilometers
    documentID.text = list.documentID
    latitude = list.latitude
    longitude = list.longitude
    note.text = list.note
    noteImg.image = list.noteImg
}

1 Ответ

2 голосов
/ 05 июня 2019

Я уверен, но, согласно моим знаниям и опыту, приведенный ниже код вызывает неожиданный вывод.

cell.note.text!.isEmpty == false

UITableView заполняет данные на reusing UITableViewCell.Вот почему вы получаете неожиданный вывод.

Просто замените метод cellForRowAt на мой код.Я надеюсь, что это будет работать.

Код:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let listPath = list[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
    cell.setCell(list: listPath) 

    if listPath.note.isEmpty == false{
        cell.noteImg.isHidden = false
    }else{
        cell.noteImg.isHidden = true
    }
    return cell
}

Обновление:

dequeueReusableCell (withIdentifier: for:)

Возвращает повторно используемый объект ячейки табличного представления для указанного идентификатора повторного использования и добавляет его в таблицу.

Ссылка: dequeueReusableCell

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