Изображение повторяется при вставке данных Firestore

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

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

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, и ЕСЛИ «заметки» не пусты. Мое изображение должно быть видно.

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

Изображение повторяется при вставке данных Firestore

Итак, как вы можете видеть на картинке. Первый (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
}

пожалуйста, опубликуйте содержимое метода setCell

Hitesh Surani 05.06.2019 11:29

@iMHiteshSurani Ну вот

Putte 05.06.2019 11:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

cell.note.text!.isEmpty == false

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

Просто замените метод 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 (с идентификатором: для:)

Returns a reusable table-view cell object for the specified reuse identifier and adds it to the table.

Ссылка: dequeueReusableCell

@Putte LOL ... Все дело в опыте. В любом случае, вы можете сослаться на него developer.apple.com/documentation/uikit/uitableview/…. Если вы действительно хотите понять точную проблему.

Hitesh Surani 05.06.2019 11:55

Другие вопросы по теме