2012-02-28 8 views
9

W mojej przeglądarce próbuję załadować UIWebView z NSData uzyskaną z NSURLConnection. Kiedy próbuję załadować go do wersji UIWebView, zamiast witryny, pojawia się zwykły tekst HTML.Ładowanie NSData do UIWebView

Oto mój kod:

w viewDidLoad:

NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.msn.com"]]; 
[NSURLConnection connectionWithRequest: request delegate:self]; 

później w kodzie:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    { 
    webdata = [NSMutableData dataWithData: data]; 
    } 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
    [webview loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
    } 

UIWebView loading plain HTML instead of loading the page

+0

Zobacz https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html – titaniumdecoy

Odpowiedz

14

Nie dodajesz danych, które otrzymujesz. Użyj tego kawałka kodu:

Ta metoda może zostać wywołana raz lub kilka razy w zależności od długości danych. Dlatego zamiast przypisywać nowe dane do twojego ivar, dołącz do niego swoje dane, aby uzyskać pełną odpowiedź, a nie ostatni otrzymany pakiet danych.
------------------------------------------------ -------------------------------------------------- ----------------------------------
Zaktualizowany
Lub użyj w ten sposób.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
     webdata = [[NSMutableData alloc] init]; 
} 
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
    [webdata appendData:data]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
    [mWebView loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
} 
+1

Powyższa metoda działa bardzo dobrze, dzięki. Tylko jedno: ładuje wersje witryn na komputery stacjonarne, gdy używam tej metody, zamiast używać UIWebview loadRequest: NSURLRequest. Czy istnieje jakiś prosty sposób domyślnego załadowania mobilnej wersji witryn? (Jestem nowy w tego rodzaju sprawach) – Greg

+0

ja też: D .. Ułóż to jako nowe pytanie. Do tego czasu znajdę odpowiedź .. i opublikuję tutaj link do twojego nowego pytania, tak, że jeśli przyjdzie odpowiedź, również pozwolę mu to zrobić –

+0

Szukam również, jak załadować wersję mobilną i użyć niestandardowego programu ładującego do załaduj kliknięte łącza wewnątrz UIWebView –