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

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

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

8 ответов

20 просмотров

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

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

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

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

Для этого можно сделать хитрее. Создать делегат 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) // Теперь ты знаешь какая это ячейка и делай что нужно } }

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта