Во время недавнего интервью мне задали такой сценарий, как #9 этих общих вопросов для интервью, связанных с загрузкой изображений асинхронно в ячейку представления таблицы. Я понимаю необходимость его вызова в cellForIndexPath и асинхронно, но я был в тупике относительно того, как проверить, будет ли ячейка все еще видна после завершения асинхронного вызова (см. Выдержку № 3 пули ниже). Другими словами, после асинхронного вызова, как я могу определить, была ли ячейка таблицы, которую я получала данные, все еще находится в представлении.Асинхронная выборка завершена: отображается ли ячейка?
Когда изображение загрузило на ячейку, мы должны проверить, что клетка еще в представлении или она была повторно использована в другой части данных. Если он был повторно использован, мы должны отбросить изображение, , иначе нам нужно переключиться обратно в основной поток, чтобы изменить изображение на ячейку.
Вы можете назначить тег ячейке, а затем проверить, присутствует ли ячейка с этим тегом в таблицеView или нет. Вы можете легко видеть видимые ячейки, поскольку UITableView предоставляет метод для этого. –
Используйте отличную асинхронную библиотеку, такую как AlamofireImage/Kingfisher и т. Д., Которая позаботится о загрузке вашего асинхронного изображения. С другой стороны, прикрепите тег для своей ячейки, или вы можете проверить на indexpath.row, чтобы получить видимую ячейку и реализовать свою логику изображения. – Tuhin