У меня есть UITableViewController, отображающий список аудиофайлов, при нажатии на аудиофайл я нажимаю другой UITableViewController, показывающий подробное представление аудиофайла. В этом представлении также есть кнопка «Загрузить» и представление UIProgressIndicator.Рекомендации по внедрению диспетчера загрузки iOS с представлением прогресса
У меня есть класс диспетчера загрузки (реализованный как Singleton), который заботится о загрузке файла. Его метод загрузки принимает блок, который вызывается с обновлениями о ходе загрузки. Я использую его для обновления представления UIProgressIndicator. Это работает отлично до того момента, когда вы покидаете контроллер подробного представления и возвращаетесь в более поздний момент времени, когда файл все еще загружается. Разумеется, ранее установленный блок прогресса все еще доступен, но его просмотр в UIProgressIndicator отсутствует, поэтому он больше не обновляется.
Мне интересно, если разумная идея просто повторно установить блок при повторном входе в контроллер подробных представлений (viewDidLoad) или если блок-подход не подходит для этого случая? Может быть, лучше использовать KVO?
Любые предложения?
Спасибо!
Да, жизнь VC является самой важной частью. Я часто решал это через NSNotifications, отправляемый загрузчиком-кодом. Его исполнение и легко реализуется и дает слабо связанную систему. – Tobias
Кроме того, если вы хотите использовать блоки KVO +, отметьте Block-KVO https://github.com/iMartinKiss/Block-KVO –
Спасибо за понимание! Я пошел с подходом KVO, и он сделал код намного проще для понимания и меньше подвержен ошибкам ... как только я понял, что observValueForKeyPath не обязательно выполняется в основном потоке, и мне пришлось бросать dispatch_async, чтобы избежать сбоев, когда обновление индикатора индикатора прогресса. –