Я пытаюсь обновить индикатор выполнения UIProgressView, который у меня есть в UIView во время длительного процесса загрузки ресурсов. Скажем, я загружаю кучу растровых изображений из файла NIB (например, сотню). После загрузки 10 я выдаю .progress в UIProgressView, который является частью UIView, который уже отображается. Итак, я выдаю:UIProgressView не обновляет, пока мое приложение загружает свои ресурсы
myView.myProgressView.progress=0.2;
Затем я загружаю еще 10 растровых изображений, а также вопрос:
myView.myProgressView.progress=0.4;
и т.д., и т.д. При запуске приложения, индикатор не продвигается. Он просто находится в исходном положении. Из-за того, что мне кажется, что это полный придурок, я должен загружать свои ресурсы в отдельный поток, чтобы ОС могла обновлять пользовательский интерфейс, или есть ли более простой способ? Спасибо за любую помощь.
Привет, Marcc, Я пробовал ваш performSelector подход безрезультатно. Метод setProgressBar получил имя ПОСЛЕ завершения моего другого кода. Я даже не пытался обновить UIProgressView. Я просто поставил NSLog в setProgressBar и вышел на консоль ПОСЛЕ всех других методов загрузки ресурсов. Любые другие предложения? Можете ли вы указать мне ссылку на то, что, возможно, все это делаете в другом потоке? – kspeacock
Упс. Таким образом, идея правильная, вам нужно обновлять данные по одному потоку, а не блокировать основной поток (поток пользовательского интерфейса) при этом. Я думаю, вам действительно нужно использовать performSelectorOnMainThread, если вы примете этот подход (поиск на сайте разработчика для документов на этом). – marcc