У меня есть UITableView
с максимум несколькими сотнями ячеек (не все видны сразу).Каждая ячейка содержит UIButton
с указанием хода загрузки.URLSession
выполняет загрузку в фоновых задачах.
В настоящее время делегатом сеанса является UIViewController
, который управляет ячейками.В результате сеанс вызывает делегата
.URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
для периодического информирования делегата о ходе отправки контента на сервер.
В методе делегата я нахожу UIButton
, связанный с этой задачей, и анимируюновый прогресс (я могу найти кнопку, потому что я делаю button.identifier = task.identifier
).
Этот подход заставляет меня находить кнопку каждый раз, когда вызывается метод делегата.Это кажется косвенным, и мне интересно, есть ли лучший способ сделать это - могут быть сотни кнопок, так обеспокоенных временем выполнения.
Я думал сделать кнопку делегатом сеанса, но это противоречитMVC и ссылка на кнопку могут исчезнуть или измениться в табличном представлении, что приведет к неопределенному поведению (хотя имеет смысл обновлять только те кнопки, которые действительно находятся в памяти).