2010-10-29 6 views
2

В предыдущих приложениях я загрузил данные в UIWebView с помощью 4 шагов: 1. Используйте NSURL-соединение для асинхронного захвата данных из сети 2. Когда загрузка завершена, преобразуйте объект NSData в строку, и манипулировать данными перед отображением. 3. Записать преобразованные данные к папке дока 4. Загрузите данные в UIWebView из файлаКаков наилучший вариант для загрузки веб-контента в UIWebView?

Но в моем текущем приложении, у меня нет необходимости манипулировать данные, которые я загрузить из Интернета. Я просто хочу загрузить асинхронно и загрузить его в UIWebView, пока это представление еще не видно. Затем покажите это представление, когда оно мне понадобится.

Было бы лучше использовать сообщение loadRequest, которое было отправлено как блок GCD? Это возможно? Я пытаюсь избежать беспорядка записи в локальный файл, а затем перезагружать страницу из этого файла. Предложения?

ответ

6

Почему бы не просто дать NSURLRequest непосредственно на webview?

Он отлично способен загружать данные из самого Интернета, если вам не нужно массировать данные в пути.

+1

Insn't что синхронный запрос, если сделано с помощью loadRequest? Поэтому мой основной цикл цикла будет привязан, пока эти данные будут извлечены из URL-адреса. –

+2

Нет, WebView всегда загружает материал асинхронно. Это синхронно, если вы используете NSURLConnection для загрузки синхронного запроса. –

4

Попробуйте как этот

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webview loadRequest:request]; 

Все лучшее.

1

UIWebView

Вы можете загрузить запрос как @Warrior упомянул Основное преимущество его загруженную асинхронно, и вы не должны управлять всем, как @Kevin Ballard упомянул.

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webview loadRequest:request]; 

UIWebViewDelegate

Но если вы хотите получать уведомления когда URL, это загрузить completely.You должны соответствовать в UIWebViewDelegate

Заголовок

@interface YourController : UIViewController <UIWebViewDelegate> 

Реализация

1.you должны установить делегата для себя

self.yourWebView.delegate = self; 

2.Вы должны реализовать следующий делегат, который является, где вы будете уведомлены, когда загрузка запроса завершена.

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    // Do whatever you want here 
    } 

3.you должны установить Webview делегат ноль и остановить загрузку запроса и предотвратить себя от notorius EXC_BAD_ACCESS ошибки из-за оборванный указатель.Вы можете узнать больше о here

// If ARC is used 
- (void)dealloc { 
    [_webView setDelegate:nil]; 
    [_webView stopLoading]; 
} 

// If ARC is not used 
- (void)dealloc { 
    [webView setDelegate:nil]; 
    [webView stopLoading]; 
    [webView release]; 
    [super dealloc]; 
} 

// ARC - Before iOS6 as its deprecated from it. 
- (void)viewWillUnload { 
    [webView setDelegate:nil]; 
    [webView stopLoading]; 
} 

Примечание:

Вы не должны вставлять объекты UIWebView в объектах UIScrollView. Если вы это сделаете, может возникнуть непредвиденное поведение, потому что события касания для двух объектов могут быть перемешаны и неправильно обработаны.

Я надеюсь, что это охватывает самые необходимые базовые вещи

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