Добавление ячейки в другой TableView. (выбор элемента из таблицы, отображение его в другом представлении таблицы)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Добавление ячейки в другой TableView. (выбор элемента из таблицы, отображение его в другом представлении таблицы)

Сообщение Anonymous »

Я создаю приложение, в которое встроены две разные вкладки. Первая вкладка — «Главная», которая по сути представляет собой табличное представление с ячейками, настроенными с помощью API. (На данный момент API дает мне названия стран)
В этих ячейках также есть кнопка «Звездочка», которая на данный момент печатает данные конкретной ячейки.
Вторая вкладка — Вкладка «Сохранено» (

Код: Выделить всё

SavedViewController
), где я хочу показать "помеченные" страны, используя табличное представление.
Вы можете увидеть изображение ниже, чтобы получить идея для приложения.
Изображение

Кнопка со звездочкой имеет функцию в моем СтраныTableViewCell. Я использую saveButtonDelegate, чтобы сообщить SavedViewController о том, что элемент будет сохранен. Код в CountryTableViewCell для кнопки звездочки приведен ниже.

Код: Выделить всё

@objc func buttonTapped() {
//If Button is selected fill the image. Else unfill it.

if !isSaveButtonSelected {
saveButton.setImage(UIImage(systemName: "star.fill"), for: .normal)
isSaveButtonSelected = true

saveButtonDelegate?.saveButtonClicked(with: countryData) //Checking if save button is clicked
}
}

Код: Выделить всё

countryData
— это данные, которые я получаю от API, и это данные, которые я хочу передать в SavedViewController.

Код: Выделить всё

struct CountryData: Codable {
let name : String
}
Итак, в SavedViewController я обрабатываю данные, используя соответствие SaveButtonProtocol, как показано ниже:

Код: Выделить всё

extension SavedViewController: SaveButtonProtocol {

func saveButtonClicked(with data: CountryData) {
countryDataArray.append(data)
print("saveButtonClicked")
print("countryData in savevc is \(countryDataArray)")
DispatchQueue.main.async {
self.countriesTableView.reloadData()
}
}
}
Каждый раз, когда я нажимаю кнопку со звездочкой на первой вкладке, эта функция вызывается в SavedViewController. Поэтому всякий раз, когда я нажимаю кнопку, эти инструкции print, приведенные выше, работают нормально.
Проблема в том, что при каждом нажатии кнопки со звездочкой она должна добавлять данные из текущей нажатой ячейки. в CountryDataArray в SavedViewController, но массив не заполняется должным образом.
Предположим, я нажал звездочку первой ячейки, мой print("countryData в savevc это Оператор \(countryDataArray)") печатает: ["Ватикан"], затем я нажимаю звездочку второй ячейки, печатается только ["Эфиопия"] хотя он должен печатать ["Ватикан", "Эфиопия"]
Почему возникает эта проблема? Я думаю, что я делегирую SavedViewController из класса ячейки, чтобы он вел себя по-разному для каждой другой ячейки. Если это проблема, что мне делать, чтобы ее решить?

Подробнее здесь: https://stackoverflow.com/questions/701 ... ew-showing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»