Jack
Jack

Reputation: 9784

Activity Indicator not displaying based on whether the UIWebView is loading or not

Sorry if this is an easy one. Basically, here is my code:

MainViewController.h:

#import "FlipsideViewController.h"

@interface MainViewController : UIViewController <UIWebViewDelegate, FlipsideViewControllerDelegate> {
    IBOutlet UIWebView *webView;
    IBOutlet UIActivityIndicatorView *spinner;
}

- (IBAction)showInfo;

@property(nonatomic,retain) UIWebView *webView;
@property(nonatomic,retain) UIActivityIndicatorView *spinner;

@end

MainViewController.m:

#import "MainViewController.h"
#import "MainView.h"

@implementation MainViewController

@synthesize webView;
@synthesize spinner;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

 - (void)viewDidLoad {

     NSURL *siteURL;
     NSString *siteURLString;

     siteURLString=[[NSString alloc] initWithString:@"http://www.site.com"];

     siteURL=[[NSURL alloc] initWithString:siteURLString];

     [webView loadRequest:[NSURLRequest requestWithURL:siteURL]];

     [siteURL release];
     [siteURLString release];

 [super viewDidLoad];
 }

- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller {

    [self dismissModalViewControllerAnimated:YES];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [spinner stopAnimating];  
    spinner.hidden=FALSE;
    NSLog(@"viewDidFinishLoad went through nicely");
}

- (void)webViewDidStartLoad:(UIWebView *)webView {     
    [spinner startAnimating];     
    spinner.hidden=FALSE;
    NSLog(@"viewDidStartLoad seems to be working");
}

- (IBAction)showInfo {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

- (void)dealloc {
    [spinner release];
    [webView release];
    [super dealloc];
}


@end

Unfortunately nothing is ever written to my log, and for some reason the UIActivityIndicator never seems to appear. What's going wrong here?

Thanks folks

Jack

Upvotes: 3

Views: 3018

Answers (2)

NSResponder
NSResponder

Reputation: 16861

- webViewDidFinishLoad: is sent to the Web View's delegate when it has successfully loaded content from the URL in question. Have you confirmed that the URL is valid by checking it in Safari? Have you double checked your delegate connection?

Upvotes: 1

Randy Simon
Randy Simon

Reputation: 3324

You need to set the UIWebView delegate. You implement the protocol but you never tell the UIWebView that this class is the delegate so those methods will never be called.

webView.delegate = self;

Also, you may want to check out this question/answer on how to implement the UIWebViewDelegate methods.

Upvotes: 4

Related Questions