Indicatore di attività non visualizzazione a seconda che l'UIWebView sta caricando o no
-
21-09-2019 - |
Domanda
Scusate se questo è un compito facile. In sostanza, qui è il mio codice:
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
Purtroppo nulla è mai scritto per il mio log, e per qualche motivo il UIActivityIndicator
non sembra apparire. Cosa c'è che non va qui?
Grazie ragazzi
Jack
Soluzione
È necessario impostare il delegato UIWebView. Si implementa il protocollo, ma non avete mai dire l'UIWebView che questa classe è il delegato in modo da quei metodi non saranno mai chiamati.
webView.delegate = self;
Inoltre, si consiglia di controllare questo / risposta su come implementare i metodi UIWebViewDelegate.
Altri suggerimenti
- webViewDidFinishLoad:
viene inviata al delegato del Web View quando è stato caricato il contenuto della URL in questione. Avete confermato che l'URL è valido controllando in Safari? Hai ricontrollato la vostra connessione delegato?