Выберите несколько строк в 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.