Блокировать UITabBarController, пока содержимое контроллера представления не было заряжено - PullRequest
1 голос
/ 12 сентября 2011

Я делаю приложение, которое использует TabBarController, и каждая вкладка использует свой собственный контроллер навигации.

Приложение имеет динамическое содержимое, и я использую методы viewDidDisappear viewDidAppear для создания или уничтожения объектов, которые мне нужны, каждый раз, когда я вхожу или выхожу в ViewController.

Моя проблема в том, что когда я начинаю плавать очень быстро, и у меня нет времени загружать потоки, которые я использую для загрузки контента, такого как приложение peta XML, или уничтожать объекты, когда я покидаю ViewController.

Как я могу управлять вкладками панели навигации или tabbarviewcontroller, чтобы они не отвечали, пока viewcontroller не загрузил все содержимое?

Извините, если я не очень хорошо выражен. Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Независимо от того, используете ли вы синхронный или асинхронный запрос, просто покажите UIAlertView при загрузке данных.Это будет одновременно уведомлять пользователя о том, что что-то загружается, и блокирует взаимодействие со всеми другими представлениями на экране.

1 голос
/ 12 сентября 2011

Как другие предлагали в комментариях, я считаю, что вы хотите изменить порядок, в котором все происходит.Возможно, что-то вроде этого:

  • On viewWillAppear :, очистить (или отключить или все, что подходит) ваши объекты, которые больше не действительны, и начать поток загрузки нового содержимого.Возможно, отобразите UIActivityIndicator или аналогичный.
  • На viewWillDisappear :, сообщите потоку загрузки нового контента, что он может остановиться, его результаты больше не нужны.Если вы установили индикатор активности, снимите его.
  • В конце потока загрузки нового содержимого отключите любой индикатор активности, обновите пользовательский интерфейс с новым содержимым и активируйте.

На самом деле я не вижу никакого способа обойти это - если пользовательский интерфейс недействителен до загрузки нового контента, вам придется подождать его.

Другое решение может заключаться в кэшированиисодержимое из предыдущей выборки, и всегда отображать их в viewDidLoad.Затем в конце вашего потока нового контента кэшируйте новое содержимое и обновите пользовательский интерфейс.

...