rudirudi
rudirudi

Reputation: 73

uiwebview not loading request even with delegate = self

I have created a NSObject class and included , in the init i create a uiwebview set the delegate to self and send the load request.

For some reason webViewDidFinishLoad or didFailLoadWithError never get fired. I can't figure why.

//
//  RXBTest.h
#import <Foundation/Foundation.h>
@interface RXBTest : NSObject <UIWebViewDelegate>
@end

//  RXBTest.m
//  pageTest
#import "RXBTest.h"
@implementation RXBTest
- (id) init
{
     if((self=[super init])){
         UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
         [webView setDelegate:self];

         [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
     }
     return self;
}   
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
     NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
     NSLog(@"finished");
}
@end

anybody has any ideas?

thanks rudi

Upvotes: 4

Views: 5842

Answers (2)

Mathew
Mathew

Reputation: 1798

If you are using ARC, then the problem is that your webView variable is local to the init method and therefore is getting deallocated before the web view finishes loading. Try adding the web view as an instance variable:

@interface RXBTest : NSObject <UIWebViewDelegate>
{
    UIWebView* webView;
}
@end

@implementation RXBTest
- (id) init
{
    if((self=[super init])){
        webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
        [webView setDelegate:self];

        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
    }
    return self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
    NSLog(@"finished");
}
@end

If you are not using ARC, you will need to remember to release your webView object in the dealloc method as well.

Upvotes: 5

user2742371
user2742371

Reputation:

you forgot to add this in your header file (.h):

#import <UIKit/UIWebView.h>

Upvotes: 2

Related Questions