У меня есть табличный вид, который перезагружается всякий раз, когда обнаружено новое периферийное устройство. У меня есть кнопка на каждой ячейке. Эта кнопка позволяет добавить периферию к массиву. Теперь, добавив кнопку, я хочу изменить ее на отмену, и это то, что я сделал. Проблема здесь, таблица всегда перезагружается, и, следовательно, кнопка всегда возвращается к исходному состоянию (ADD). Любое решение, пожалуйста?Добавление кнопки в постоянный изменяемый вид таблицы
ответ
сделать это в tableView:cellForRowAtIndexPath:
if ([self.arrayOfPeripherals containsObject:peripheralForCell])
[cell.button setTitle:@"Cancel" forState:UIControlStateNormal];
else
[cell.button setTitle:@"Add" forState:UIControlStateNormal];
self.arrayOfPeripherals
ваш массив с периферийными устройствами, peripheralForCell
ваш объект данных для ячейки в indexPath
Ваши ячейки таблицы должны отражать состояние элементов в модели данных , Каждый раз, когда вы перезагружаете таблицу, так как представление таблицы запрашивает ячейки через ее делегат, вы должны настроить каждую ячейку с информацией, необходимой ей для отражения текущего состояния. Похоже, вы только отслеживаете состояние в активных ячейках, а не сохраняете общее состояние в своей модели данных.
Так что, когда попросили ячейки для данной indexPath по табличном:
1) Dequeue ячейки для indexPath запрошенного.
2) Настройте ячейку так, чтобы она знала, в какой части модели данных это вид. Дисплеи/кнопки в ячейке должны отражать то, что находится в модели данных.
3) В вашей кнопке сделайте целевое действие обновленной моделью данных, а не ячейкой.
4) Если модель данных изменена кнопкой в ячейке, перезагрузите только эту строку, а не всю таблицу. Перезагрузка строки приведет к тому, что таблица попросит новую ячейку, которая теперь будет отражать вашу модель данных.
Это приведет к тому, что ваши ячейки не будут затронуты перезагрузкой таблиц, так как вы сейчас отслеживаете состояние должным образом.
Здесь я предполагаю, что вы храните pheripheral
до NSMutableArray
. после того, как новый pheripheral обнаружен, вы добавляете это в свой NSMutableArray
. при этом вам нужно хранить ключ isPheripheralAdded
с каждым содержимым pheripheral
.
isPheripheralAdded
имеет boolean
тип.
Начальная установка isPheripheralAdded
флэшка False
для всех pheripheral
содержит. как только пользователь нажал на кнопку Add
. isPheripheralAdded
флаг обновляется до True
и обновляет содержимое выбранного индекса в NSMutableArray
.
Теперь у вас есть isPheripheralAdded = True
только для тех, которые вы добавили. прочее есть isPheripheralAdded = False
.
Теперь, пока reload table
, добавьте следующий код в вас cellForRowAtIndexPath
.
if (isPheripheralAdded == True)
[cell.button setTitle:@"Cancel" forState:UIControlStateNormal];
else
[cell.button setTitle:@"Add" forState:UIControlStateNormal];
Надеюсь, это поможет вам.
Я предлагаю вам создать объект и вставить объекты в ваш массив (если вы еще этого не сделали).Затем создайте для этого объекта BOOL showCanceled
. Как только добавленная периферия добавит изменения к этому объекту (в вашем массиве, который вы загружаете для своего TableView), установите showCanceled = YES
. Когда вы загружаете TableView, проверьте состояние showCanceled и установите его.
if (showCanceled == YES)
[cell.button setTitle:@"Cancel" forState:UIControlStateNormal];
else
[cell.button setTitle:@"Add" forState:UIControlStateNormal];
- 1. Добавление кнопки на вид
- 2. Добавление одной кнопки на вид
- 3. добавление кнопки на вид программно
- 4. Добавление кнопки в другой вид из фрагмента
- 5. Постоянный вид на объекте c
- 6. Невозможно получить постоянный вид кнопки с помощью jQuery и CodeIgniter
- 7. Добавление данных с datePicker в вид таблицы
- 8. Добавление контактов в мой вид таблицы,
- 9. Добавление кнопки в JTable перед созданием таблицы
- 10. OpenERP 7: добавление кнопки на вид продукта
- 11. Добавление/удаление объекта в изменяемый массив
- 12. Как объявить постоянный «изменяемый указатель» к неизменяемому блоку памяти
- 13. Динамические кнопки в расположении таблицы добавление горизонтально
- 14. Добавление кнопки в один столбец таблицы
- 15. Добавление кнопки в каждую строку таблицы
- 16. Как удалить постоянный вид в Couchdb-Futon
- 17. Параллакс прокручивает фоновое изображение в постоянный вид
- 18. Добавление подсмотра в размытый вид
- 19. Размер шрифта, изменяемый при изменении размера кнопки
- 20. добавление кнопки в UIView
- 21. Добавление динамических представлений в основной вид при нажатии кнопки
- 22. Добавление кнопки «Назад» на контроллере просмотра таблицы
- 23. Добавление узла в LinkedList Не постоянный C++
- 24. Добавление кнопки в UITableViewCell
- 25. Как вернуть постоянный вид std :: string?
- 26. Добавление полосы прокрутки в динамический вид таблицы в относительной компоновке
- 27. Добавление UITableVIEW на вид
- 28. добавление текстового поля в виде таблицы при нажатии кнопки
- 29. Редактируемый вид таблицы таблицы
- 30. Пользовательский внешний вид кнопки кнопки
Да, я добавил новое свойство для периферийного устройства, имеющего тип boolean. Всякий раз, когда я нажимаю кнопку, я извлекаю периферию из массива с помощью выбранного индекса, а затем я удаляю объект из этого массива и повторно добавляя обновленный объект в тот же индекс, а затем перезаряжаю таблицу. – Moeit