Wie implementieren Sie eine UIActivityIndicatorView, wenn die UIWebView geladen wird? (iPhone ObjC)
Möchte ich wissen, wie die Umsetzung einer activityIndicator in einem WebView basierte app, schrieb ich folgenden code, aber der Indikator nicht angezeigt.
Webview laden Sie die Datei lokal, so dass es, laden sehr schnell, aber wenn es laden einer externen Seite laden langsam, und ich brauche die Kennzeichen...
FirstViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController :
UIViewController <UIWebViewDelegate>{
IBOutlet UIWebView *webview1;
NSURL *urlLocation;
IBOutlet UIActivityIndicatorView *m_activity;
}
@property (nonatomic, retain) UIActivityIndicatorView *m_activity;
- (IBAction)searchbutton:(id)sender;
- (IBAction)home:(id)sender;
@end
FirstViewController.m
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize m_activity;
//viewWillAppear loads every time younopen up this View
- (void)viewWillAppear:(BOOL)animated {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
urlLocation = [NSURL fileURLWithPath:filePath];
[webview1 loadRequest:[NSURLRequest requestWithURL:urlLocation]];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
//Initialization code
m_activity = nil;
}
return self;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
m_activity.hidden= TRUE;
[m_activity stopAnimating];
NSLog(@"Web View started loading...");
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
m_activity.hidden= FALSE;
[m_activity startAnimating];
NSLog(@"Web View Did finish loading");
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum sind Sie Einstellung Ihrer Aktivitäten-Anzeige auf null in deiner init?
Den Aufruf von super initialisiert Ihre Anzeige von Ihrem XIB (vorausgesetzt, Sie verbanden es mit Ihrer Steckdose in IB), aber dann sind Sie setzen der Referenz auf null, nachdem es initialisiert wurde. Entfernen Sie diese Zeile. Dann gehen Sie wieder in den interface builder und legen Sie die "Ausblenden, wenn gestoppt" Kontrollkästchen. Jetzt können Sie den code vereinfachen, zeigt die Anzeige:
Dem "Ausblenden, wenn nicht mehr" bewirkt, dass die Anzeige ausblenden, wenn Sie Sie anhalten animiert werden.
didFailLoadWithError
Methode so gut ist?Was ist hier das Problem, der code, den du oben gepostet funktionieren sollte, außer, dass Sie nicht initialisieren die Anzeige irgendwo (vielleicht haben Sie in der viewDidLoad -) aber der code oben sollte funktionieren, da die Anzeige wurde korrekt initialisiert, und u legen Sie die webview d elegate auf den view-controller gibt es, ich habe es die Arbeit an einigen meiner apps wo ich webviews und Indikatoren, um anzuzeigen, wenn die Beladung...
UIWebView.laden-Eigenschaft kann verwendet werden.
Apple doc:
@property(nonatomic, readonly, getter=isLoading) BOOL laden
Beschreibung
Ein boolescher Wert, der angibt, ob der Empfänger fertig ist, Inhalte zu laden. (nur Lesen)
Wenn JA, der Empfänger ist noch, Inhalte zu laden, da ansonsten KEINE.
In iOS6 wie es aussieht, hat Apple behoben einige Probleme mit dieser Eigenschaft als gut. http://code-gotcha.blogspot.fi/2012/08/uiwebviewloading-in-ios-6-fixed.html