Запрос UITableView для выбранных ячеек для отображения кнопки «Удалить» - PullRequest
0 голосов
/ 14 марта 2012

Фон:

У меня есть UITableView, который отображает данные из массива.Я использую KVO для отображения кнопки «Редактировать» на панели навигации, когда счетчик массивов больше 0, и удаляет себя, когда счетчик равен 0. Это нормально работает.При редактировании я помещаю элемент панели «Удалить» как элемент панели справа.Это тоже работает нормально.Как и ожидалось, кнопка «Удалить» включена по умолчанию.В табличном представлении множественныйSelectionDuringEditing имеет значение YES.Я могу выбрать несколько элементов и правильно их удалить.Моя цель - начать редактирование с отключенной кнопкой «Удалить» до тех пор, пока не будет выбран хотя бы один элемент, а затем отключен при наличии 0 вариантов выбора.Я пробовал некоторые вещи, но они были бесплодны.Я попытался иметь свойство NSMutableSet (личное), которое я мог бы отслеживать в отношении его количества и соответственно включать / отключать кнопку Удалить.Тем не менее, я столкнулся со стеной.tableView: DidSelectRowAtIndexPath: вызывается только при начальном выборе во время редактирования, а НЕ при отмене выбора строки.Я пропускаю возможность контролировать выбор таблицы в режиме редактирования?Заранее спасибо.

Вдобавок, если бы я переместил кнопку «Удалить» на панель инструментов UITool с намерением также включить кнопку «Удалить все», есть ли способ выбрать все строки (дажете не видны)?

1 Ответ

1 голос
/ 14 марта 2012

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

Я надеваюНе вижу удобного метода для программного выбора нескольких строк.Если вы выполняете команду «удалить все», может быть более уместным просто удалить базовые объекты модели, а затем указать таблице для обновления (то есть не стоит беспокоиться о том, чтобы сначала выбрать их все).Вы можете анимировать это, используя -deleteRowsAtIndexPaths:withRowAnimation: и / или -deleteSections:withRowAnimation:;в любом случае вам придется перечислять для себя, какие строки / разделы вы хотите удалить, но соответствие между разделами / строками таблицы и вашей коллекцией (коллекциями) объектов модели должно быть довольно простым, особенно если вы все обнажаете.

...