2010-05-15 2 views
2

У меня есть приложение, которое работает с вкладками и веб-просмотром. У меня уже есть настройка для обновления страницы, назначенной вкладке, каждый раз, когда выбран элемент на вкладке. Моя проблема заключается в том, что для загрузки страницы требуется некоторое время, и невозможно сказать, является ли отображаемая страница старой или обновленной.Как добавить экран загрузки для приложения UIWebView каждый раз, когда загружается новая страница?

Что я хочу сделать, это добавить экран загрузки (простого изображения), который будет отображаться до загрузки обновленной страницы. Вот функция, которую я запускаю на каждом табло:

- (void) goToPage:(NSString *)sid 
{ 
    NSString *newURL = [NSString stringWithFormat:@"%@/mykingdom.php?sid=%@", appURL, sid]; 

    [secondView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:newURL]]]; 
} 

Спасибо!

+0

Я думаю, эта ссылка будет более полезной для вас. Как открыть веб-страницу в веб-просмотра в Iphone [1]: http://stackoverflow.com/questions/2824845/how-to-show-a-loading-message-while-uiwebview-loads-its -content –

ответ

5

UIWebViewDelegate имеет 2 удобные методы:

– webViewDidStartLoad:(UIWebView *)webView 
– webViewDidFinishLoad:(UIWebView *)webView 

можно легко реализовать и делать все, что вам нравится. Cheers,

+0

Спасибо, Марсио! К сожалению, мне нужна дополнительная помощь. Где я могу поместить этот код? Я попытался добавить его в класс, назначенный для соответствующего веб-просмотра, но он не запускается при загрузке страницы. – AragornSG

+0

Я понятия не имею о вашем коде. В любом случае, я предполагаю, что вы используете два экземпляра uiwebview (один из них - ваш secondView), возможно, внутри viewcontroller. Viewcontroller - это хорошее место, где вы можете реализовать два метода делегата, не забудьте установить свойство delegate для каждого веб-представления на правильный объект (firstView.delegate = self, secondView.delegate = self): возможно, вы забыли эти две строки кода. В противном случае вы можете расширить webview и управлять своими методами делегирования непосредственно внутри класса webview: если вам не нужна какая-либо конкретная ссылка на объект, это может быть очень шикарным способом. – marcio

+0

ОК, я понял, добавил изображение и переключил его на скрытые или видимые в этих двух функциях. – AragornSG

0

Предпочтительным пользовательским интерфейсом является отображение большого UIActivityIndicatorView. Это «шестерня», которая вращает подсветку, как бы поворачивая.

Если вы хотите что-то еще, вы можете просто отобразить модальный вид через UIWebView с некоторой графикой в ​​нем, а затем отбросить его, когда веб-просмотр сообщает о себе.

Если вы хотите, чтобы веб-представление отображало что-то, самым простым способом было бы иметь веб-представления, показывающие страницу загрузки, а другую загрузку фактической страницы. Поменяйте их по мере необходимости. Это оборачивается необходимостью управлять загрузкой в ​​строку, а затем загружать в веб-представление, которое иногда может быть запутанным для сложных веб-достопримечательностей.

+0

UIActivityIndicatorView не то, что я ищу, потому что я хочу скрыть «старую» страницу, чтобы избежать путаницы пользователя. Что вы подразумеваете под «модальным представлением по UIWebView» и как будет выглядеть код для этого? – AragornSG

Смежные вопросы