2012-02-08 2 views
2

Иерархия представления моего приложения имеет корень UINavigationController, внутри которого находится подкласс класса UIViewController, содержащий UIWebView. Как только приложение запускается, я хочу скрыть весь вид диспетчера навигации с помощью диспетчера представления полного экрана до тех пор, пока не будет вызван процесс загрузки метода делегата.Представление полноэкранного «модального» загрузочного представления

Для достижения этой цели я рассмотрел один из двух способов, ни один из которых «чувствовать себя»:

  • Добавить подвид в UINavigationController зрения - это чувствует себя очень Hacky соваться с видом на судоходстве Контроллер
  • Представьте контроллер модального представления с корневого уровня - мне нужно подождать до viewDidAppear, прежде чем вызывать это, что вызывает уродливую вспышку нижнего VC перед отображением. В свою очередь, загрузка VC при определенных обстоятельствах представляет собой свой собственный модальный, что означает, что у меня был бы модальный поверх модального поверх корневого VC.

Я иду полностью с ума или это не очень простой способ достичь этого потока приложений?

ответ

1

Несколько «элегантный» подход: создать общий одноэлементный класс, содержащий UIWebView, который необходимо загрузить и запустить запрос при запуске приложение. Покажите экран предварительного натяжения (первое, что добавляется в стек навигации при запуске приложения). После того, как запрос завершит загрузку, отправьте уведомление через центр NSNotification, который заставит AppDelegate нажать/переключиться на загруженный контроллер UIWebView.

+1

Это самое элегантное решение для «совместного использования» веб-обозревателя UIViewControllers и замены соответствующего корневого контроллера окна в соответствующее время. – andybee

0

Нужно ли вам полностью скрывать, что происходит в фоновом режиме с помощью UIWebView? Является ли индикатор активности блокировки достаточным для достижения этого пользовательского опыта? Если это так, я бы рекомендовал использовать один из многих доступных компонентов индикации активности, доступных в Интернете, например, MBProgressHUD

+0

Чтобы быть честным, я согласен с вами, но я пытаюсь реализовать дизайн клиентов, который запросил графику с полным экраном (в основном UIViewController, который реплицирует то, что выглядит Default.png для изящного перехода во время установки). – andybee

+0

Клиенты будут концом нас ... Удостоверьтесь, что он знает, что «изящный» не может быть достигнут таким образом :) Вы можете добавить подзаголовок к своему [UIApplication sharedApplication] .keyWindow - убедитесь, что вы это сделали, прежде чем нажимать (потому что это будет препятствовать анимации навигации, это может показаться уродливым, но вы можете добавить его как подвью, а затем оживить его положение/альфа, чтобы он выглядел немного лучше). Удостоверьтесь, что вы сохранили ссылку на нее, чтобы вы могли ее отменить, как только ваш веб-просмотр заканчивается. Loading – Stavash

+0

Spooky, вот где мое мышление переместилось с момента прочтения вашего последнего комментария! Моя забота об этом всегда заключалась в том, что в игре было несколько контролеров - хотя, если эта загрузка VC намеренно блокирует видимость другого, является ли это реальной проблемой? – andybee