Множественный выбор UITableView

Как я могу добавить UITableView в свое Основанное на представлении Приложение, где пользователь коснется больше чем на одной ячейке, и это станет выбранным, точно как установка "New Alarm" приложения для Часов под названием "Повторение" (Часы> Предупреждения> +> Повторение), и как я могу получить все выбранные ячейки в массиве?

42
задан Hank Brekke 14 June 2010 в 21:02
поделиться

2 ответа

В вашей реализации -tableView: didSelectRowAtIndexPath: вы должны установить свойство accessoryType ячейки табличного представления в зависимости от его текущего значения (чтобы оно переключалось включение и выключение несколькими нажатиями). Например:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];

    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    } else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
}

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

28
ответ дан 26 November 2019 в 23:12
поделиться

Табличное представление повторяющихся сигналов будильника часов не является множественным выбором. Думайте об этом как о множестве флажков.

Когда ячейка выбрана, цвет шрифта и тип аксессуара изменяются, а выделение исчезает. Когда выбрана отмеченная ячейка, цвет шрифта и тип аксессуара снова меняются, а выделение исчезает.

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

В методе cellForRowAtIndexPath: dataSource установите цвет текста и тип аксессуара на основе вашей модели данных.

Фактический множественный выбор будет аналогичным. Вы должны отслеживать, какие ячейки выбраны, и устанавливать выбранную ячейку для каждого состояния по мере ее создания или отображения. Когда представление таблицы сообщает, что ячейка выбрана, переключите состояние выбора в своей модели данных и установите выбранное состояние ячейки соответствующим образом.

1
ответ дан 26 November 2019 в 23:12
поделиться
Другие вопросы по тегам:

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