2010-06-04 3 views
6

У меня есть определенное количество ViewControllers в моем приложении. Они выделяются и инициализируются при запуске приложения и освобождаются при выходе. Они используются навигационным контроллером для подталкивания/выталкивания. В этих ViewControllers есть WebViews (на самом деле нет ничего другого).Загрузка содержимого UIWebView перед его отображением

Моя проблема: Когда я хочу изменить содержимое (URL) WebView, которое не находится в текущем TopViewController, содержимое не загружается до тех пор, пока я не нажму/не включу соответствующий ViewController.

И переход к нам «уродливый». Выдвинутый/вытащенный Viewcontroller показывает, в лучшем случае, старое содержимое в худшем случае или пустую страницу, прежде чем ViewController будет на полном экране. Затем появится новый контент.

Я пробовал много вещей (даже прикладывая «loadRequest» в другой теме, выглядит глупо).

Знаете ли вы, как сделать вещи гладкими?

+0

Хороший вопрос. Я также загружаю файлы HTML, хранящиеся локально внутри моего приложения. Я вижу вспышку белого во время анимации слайда-левого контроллера навигатора с моментом, прежде чем появится отображаемое содержимое HTML. И простой HTML-контент для загрузки. Последовательные показы намного быстрее. –

ответ

0

В общем, вы должны планировать свой пользовательский интерфейс для медленных загрузок UIWebView, потому что вы не можете планировать заранее, чтобы узнать, сколько времени займет. То, что я часто делаю, это UIView, у которого есть счетчик и сообщение, такое как «Загрузка ...», которое накладывается поверх UIWebView. Вот как я его использую:

In viewWillAppear: Я показываю вид загрузки и запускаю счетчик.

В webViewDidFinishLoad Я скрываю вид загрузки.

Если вы вызываете webViewDidFail, то при загрузке страницы вы не показываете промежуточный или недопустимый контент. В этом случае вы можете представить UIAlertView.

Если вам интересно, вы можете увидеть это в высокой странице партитуры моей игры (Lexitect, бесплатно)

+2

Время загрузки не так долго, потому что загружаемый URL-адрес - это локальные файлы. Мне понравилось, что я действительно могу предварительно загрузить данные, потому что из моего личного опыта он никогда не загружается, пока WebView не отображается на экране, даже если я сделаю и повторю запрос, если я попрошу перезагрузку или обновление, или перерисовку представления. Загрузка всегда задерживается, и это ядро ​​проблемы, которую я пытаюсь решить. – Cons