У меня есть обычай, UITableView
использующий UITableViewCell
s. У каждого UITableViewCell
есть 2 кнопки. Нажатие на эти кнопки изменит изображение UIImageView
внутри ячейки.
Можно ли обновить каждую ячейку отдельно для отображения нового изображения? Любая помощь приветствуется.
objective-c
uitableview
Мастер iOS
источник
источник
[NSArray arrayWithObject:]
вместо нее .beginUpdates
иendUpdates
нет необходимости.Я пытался просто позвонить
-[UITableView cellForRowAtIndexPath:]
, но это не сработало. Но следующее работает для меня, например. Яalloc
и для жесткого управления памятью.release
NSArray
источник
Swift:
источник
reloadRowsAtIndexPaths:
хорошо, но все равно заставитUITableViewDelegate
методы стрелять.Самый простой подход, который я могу себе представить:
Это важно , чтобы вызвать вашу
configureCell:
реализацию на основной поток, так как она не будет работы на не-UI потоке (та же история сreloadData
/reloadRowsAtIndexPaths:
). Иногда может быть полезно добавить:Также стоит избегать работы, которая была бы сделана за пределами видимого в данный момент представления:
источник
Если вы используете пользовательские TableViewCells, общий
не дает эффективного ответа на этот вопрос, если вы не покинете текущий вид и не вернетесь. Так же как и первый ответ.
Чтобы успешно перезагрузить первую ячейку табличного представления без переключения представлений , используйте следующий код:
Вставьте следующий метод обновления, который вызывает вышеупомянутый метод, чтобы вы могли настраивать перезагрузку только верхней ячейки (или всего табличного представления, если хотите):
Теперь, когда у вас есть это отсортировано, внутри вашего
viewDidLoad
добавить следующее:Теперь у вас есть особая функция обновления таблицы, которая перезагрузит верхнюю ячейку. Чтобы перезагрузить всю таблицу, добавьте
[self.tableView reloadData];
к вашему новому методу обновления.Если вы хотите перезагрузить данные каждый раз, когда вы переключаете представления, реализуйте метод:
источник
Свифт 3:
источник
Просто чтобы немного обновить эти ответы с помощью нового буквального синтаксиса в iOS 6 - вы можете использовать Paths = @ [indexPath] для одного объекта или Paths = @ [indexPath1, indexPath2, ...] для нескольких объектов.
Лично я обнаружил, что буквальный синтаксис для массивов и словарей чрезвычайно полезен и экономит время. С одной стороны, его легче читать. И это избавляет от нуля в конце любого списка нескольких объектов, который всегда был личной ошибкой. У всех нас есть свои ветряные мельницы, чтобы наклониться, да? ;-)
Просто думал, что я добавлю это в смесь. Надеюсь, поможет.
источник
Вот расширение UITableView с Swift 5:
Позвонить с
источник
Мне нужна ячейка обновления, но я хочу закрыть клавиатуру. Если я использую
клавиатура исчезнет
источник