Фильтр Swift UITableView (без разделов) в виде таблицы с разделами - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть список пользовательских объектов [Виды], отображаемый в табличном представлении, который отсортирован по алфавиту.Таблица имеет один раздел без заголовков, это один непрерывный список.

Я бы хотел, чтобы, когда пользователь выбирает опцию сортировки данных «по стране», выполнял следующие действия:

  • для сортировки массива, чтобы узнать, сколько разделов мне понадобится - "Species.country"
  • для создания разделов с заголовками заголовков страны
  • для сортировки стран (Разделы) в алфавитном порядке
  • перезагрузка табличного представления для отображения разделов
  • удаление разделов в обратном действии (сортировка всего списка AZ)

Возможно ли динамическое создание разделов прифильтрация / сортировка?Можете ли вы указать мне правильное направление?Большое спасибо A.

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 120
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.genusArr.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: CustomMenuCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomMenuCell

    //genusArr is type of [Species]
    let genus = self.genusArr[indexPath.row]
    cell.populate(with: genus)

    return cell
}

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Это все в вашей модели данных.У вас всегда есть разделы со строками.Но у вас есть только один раздел.Измените модель данных и методы источника данных, чтобы всегда поддерживать несколько разделов.Просто иногда эта модель данных имеет только один раздел.

Обновите модель данных, чтобы она представляла собой массив словаря, в котором словарь содержит заголовок и массив.Массив верхнего уровня - это ваши разделы (может быть только один за раз).Внутренние массивы (в каждом словаре) - это строки каждого раздела.Или определите struct с заголовком и массивом вместо использования словаря.

С этим на месте, и ваши источники данных табличного представления и методы делегата, написанные так, чтобы всегда работать с несколькими разделами, ваша таблица также будет работатьочень хорошо, когда у вас есть только один раздел данных.

Теперь это просто вопрос заполнения массива словаря по мере необходимости в зависимости от того, как вы хотите организовать данные для отображения.

0 голосов
/ 30 сентября 2018

Ответить на вопрос заголовков разделов.Вы можете попробовать использовать:

tableView(_ tableView: UITableView, titleForHeaderInSection section: Int)

или

tableView(tableView: UITableView, viewForHeaderInSection section: Int)

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