Выберите несколько строк в UITableview
Я хотел бы выбрать несколько строк в UITableview так же, как Apple, в собственном приложении Alarm (см. Рисунок
Как я могу это сделать?
Все ответы, которые я видел до сих пор, были старыми (и сказали «Не могу») или обратитесь к выбору нескольких строк в приложении родной почты. Этот метод не то, что мне хотелось бы, потому что сначала вы должны войти в «edit» -mode. Я хочу иметь возможность сразу выбирать строки.
- Вид сетки в iPhone SDK
- как правильно использовать insertRowsAtIndexPaths?
- Использование не работает с UITableView seperatorColor?
- UITableView: удаление разделов с анимацией
- Можете ли вы настраивать анимацию для встраиваемых ячеек UITableView?
Надеюсь, кто-то может помочь.
Кристиан
- Добавить салфетки для удаления UITableViewCell
- UISwitch в ячейке UITableView
- UITableView начинается со смещения в iOS 7
- Изменение цвета фона выбранной ячейки?
- Как остановить прокрутку UITextView при входе в нее
- Кнопка обнаружения проблемы cellForRowAt
- Светло-серый фон в области «отскока» UITableView
- UITableView dequeueReusableCellWithIdentifier Theory
В
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
делать
if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){ [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; }else{ [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; }
Редактировать:
Вы также должны использовать массив, который отображает проверенные ячейки, и в cellForRowAtIndexPath вам нужно проверить, должен ли быть указан параметр accessoriesType или нет.
Самый простой способ, который я нашел:
- (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];
Играть с
tableView.allowsMultipleSelection
Это спасло меня от неприятностей. Найдено здесь .
«Выбранные» строки в приложении «Часы» – это ячейки с дополнительным типом UITableViewCellAccessoryCheckmark
.
Возможные шаги для этого:
- Хранить проверено / не проверено состояние где-то для каждой строки.
- В
cellForRowAtIndexPath:
метод для ячейки в проверкеcellForRowAtIndexPath:
для ячейки ячейки набора дляUITableViewCellAccessoryCheckmark
- В
cellForRowAtIndexPath:
для ячейки в неcellForRowAtIndexPath:
ячейки набора set setaccessoryType
свойстваUITableViewCellAccessoryNone
- Когда ячейка выбрана (нажата), отмените ее выбор, инвертируйте ее проверенное состояние и перезагрузите ячейку по этому указательному пути
Если вы используете раскадровки, просто нажмите «Просмотр таблицы», а затем в «Инспекторе атрибутов» на правой панели установите свойство «Выбор» в «Множественный выбор». Я проверил это с помощью Xcode версии 8.2.1.