Выберите несколько строк в UITableview

Я хотел бы выбрать несколько строк в UITableview так же, как Apple, в собственном приложении Alarm (см. рисунок alt text

Как я могу это сделать?

Все ответы, которые я видел до сих пор, были старыми (и сказали "Не могу" ) или обратитесь к выбору нескольких строк в приложении родной почты. Этот метод не то, что мне хотелось бы, потому что сначала вы должны войти в "edit" -mode. Я хочу иметь возможность сразу выбирать строки.

Надеюсь, кто-то может помочь.

Christian

Ответы

Ответ 1

В

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

do

    if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
    }else{
       [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
    }

Edit:

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

Ответ 2

Самый простой способ найти:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}

Вы можете видеть, какие ячейки выбраны, вызывая:

NSArray *selectedCells = [self.tableView indexPathsForSelectedRows];

Ответ 3

Играть с

tableView.allowsMultipleSelection

Это спасло меня от неприятностей. Найдено здесь.

Ответ 4

"Выбранные" строки в приложении "Часы" - это ячейки с типом аксессуара UITableViewCellAccessoryCheckmark.

Возможные шаги для этого:

  • Хранить проверено/не проверено состояние где-то для каждой строки.
  • В cellForRowAtIndexPath: метод для ячейки в ячейке проверенной строки set accessoryType свойство UITableViewCellAccessoryCheckmark
  • В cellForRowAtIndexPath: для ячейки в не проверенной строке установите ячейку accessoryType свойство UITableViewCellAccessoryNone
  • Когда ячейка выбрана (нажата), отмените ее выбор, инвертируйте ее проверенное состояние и перезагрузите ячейку по этому пути указателя.

Ответ 5

Если вы используете раскадровки, просто нажмите "Просмотр таблицы", а затем в "Инспекторе атрибутов" на правой панели установите для свойства "Выбор" значение "Множественный выбор". Я проверил это с помощью Xcode версии 8.2.1.