#ios #iphone #splash-screen #mbprogresshud
#iOS #iPhone #заставка #mbprogresshud
Вопрос:
Если моему приложению для iPhone необходимо обновить базу данных Core Data, я хотел бы показать пользователям представление MBProgressHUD во время загрузки моего приложения для iPhone, чтобы они знали, что оно работает, а не зависает. Как я могу добавить MBProgressHUD на заставку во время миграции хранилища данных? Обычно я бы прикрепил его к представлению UIViewController, но заставка находится под делегатом приложения. Возможно ли это сделать?
Ответ №1:
Нет, невозможно наложить что-либо поверх заставки, поскольку она статична.
Однако вы могли бы немного отложить интенсивный процесс до загрузки приложения, а затем создать поддельный экран-заставку с индикатором выполнения, пока интенсивный процесс продолжается в фоновом потоке.
Комментарии:
1. Есть ли лучшая практика для того, как это сделать?
2. Я не могу сообщить подробности, поскольку я не делал этого раньше. Однако я бы просто предположил, что вам следует сделать то, что сказал Алекс ниже, а именно дождаться вызова
-applicationDidFinishLaunching:
и в этом методе (он в вашем делегате) создать контроллер представления и отобразить его как модальное представление, затем запустить фоновый поток. Как только это будет завершено, сделайте так, чтобы он отправлял обратный вызов вашему делегату, и в этом методе делегирования удалите представление загрузки. Итак, по сути, вы просто добавляете представление в свой метод делегирования и отклоняете его, когда фоновый процесс завершен.
Ответ №2:
Вы могли бы создать #define
макрос в заголовочном файле делегата вашего приложения (или в заголовке «глобальные»), например:
#define MyAppDelegate [[UIApplication sharedApplication] delegate]
Затем, когда вы захотите получить доступ к свойству делегирования приложения, вы можете сделать это следующим образом в любом месте вашего приложения, куда вы импортировали этот заголовок (или заголовок globals):
MyAppDelegate.property = foo;
[[MyAppDelegate property] bar];
Это может помочь вам управлять просмотром прогресса на любом этапе работы приложения.
Редактировать
sudo rm -rf верно, что вы не можете выполнять работу во время заставки. Но вы можете запустить просмотр хода выполнения в -applicationDidFinishLaunching:
методе делегата приложения, а затем запустить работу в фоновом потоке. Как только работа вашего фонового потока будет завершена, при обратном вызове отключите просмотр хода выполнения.