172 похожих чатов

Ребята, вопрос. Вот есть у меня TableView. Мне нужно для

каждой кнопки (UIButton), которые находятся внутри ячейки обновить tag, а tag в кнопке - индекс какого-либо массива. Так вот, как мне можно сделать это не прибегая к reloadData()? Дело в том, что мне нужно, чтобы анимация после deleteRows(at:) проиграла до конца и обновились все теги кнопки внутри каждой ячейки.

8 ответов

8 просмотров

Тут наверное уместнее спросить, зачем тебе таги? )

Vyacheslav- Автор вопроса
Руслан Лутфуллин
Тут наверное уместнее спросить, зачем тебе таги? )

у меня есть кнопка удаления ячейки. В моём случае нецелесообразно использовать editingStyle. tag для кнопки хранит номер элемента в массиве, соответственно, и номер строки в tableView. Мне просто нужно, чтобы удалялись строки в таблице не через reloadData с обновлённым массиво, а через deleteRows(at:), чтобы проигрывалась чёткая анимация

Vyacheslav
у меня есть кнопка удаления ячейки. В моём случае ...

Для этого можно сделать хитрее. Создать делегат protocol MyCellDelegate: AnyObject { func buttonDidTapped(in cell: MyCell) } и в ячейке final class MyCell: UITableViewCell { weak var delegate: MyCellDelegate @objc private func buttonDidTapped(_ sender: UIButton) { delegate?.buttonDidTapped(in: self) } } А вот теперь уже где-то в контроллере: class TableViewController: UITableViewController { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // … mycell.delegate = self } } extension TableViewController: MyCellDelegate { func buttonDidTapped(in cell: MyCell) { guard let indexPath = tableView.indexPath(for: cell) else { return } print(indexPath) // Теперь ты знаешь какая это ячейка и делай что нужно } }

Vyacheslav- Автор вопроса
Руслан Лутфуллин
Для этого можно сделать хитрее. Создать делегат ...

у меня примерно так сделано) Тоже делегат ячейки обрабатывает нажатие кнопки. Разница лишь в том, что у меня у меня в теге кнопки хранится номер элемента и по нему идёт indexPath(row:). Дело в том, что у меня ячейки привязаны к массиву. Мне нужно, чтобы он ещё и элемент правильный в массиве удалил. Просто получится, что если я удалю элемент по середине, то элементы в массиве сдвинутся, а вот номера ячеек нет, поскольку realoadData() я не вызываю

Vyacheslav
у меня примерно так сделано) Тоже делегат ячейки о...

У тебя ячейки расположены в соответствии с элементами массива

Vyacheslav- Автор вопроса
Руслан Лутфуллин
У тебя ячейки расположены в соответствии с элемент...

изначально да, но если удалить методом deleteRows(at:), например где-нибудь в центре таблицы какую-нибудь ячейку, то массив сдвинется, а ячейки этого не будут знать и останется прошлый индекс

Vyacheslav
изначально да, но если удалить методом deleteRows(...

Удалять нужно сначала в массиве, а после уже саму ячейки. И делать это нужно в методе что указал выше.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
14
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта