9 iphone xcode objective-c activity-indicator
我想知道如何在基于WebView的应用程序中实现activityIndicator,我写了下面的代码,但指标没有出现.
webview在本地加载文件,因此加载速度非常快,但是当它加载外部页面时加载速度很慢,我需要指标...
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
Run Code Online (Sandbox Code Playgroud)
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");
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ong 19
为什么要在init中将活动指示器设置为nil?
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
//Initialization code
m_activity = nil;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
对super的调用从您的XIB初始化您的指示器(假设您将它连接到IB中的插座),但是在初始化之后您将引用设置为nil.删除该行.然后返回界面构建器并设置"隐藏时隐藏"复选框.现在,您可以简化显示指标的代码:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[m_activity stopAnimating];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[m_activity startAnimating];
}
Run Code Online (Sandbox Code Playgroud)
"停止时隐藏"会导致指示器在停止动画时隐藏.
这里有什么问题,您上面发布的代码应该可以工作,除了您不在任何地方初始化指示器(也许您在 viewDidLoad 中这样做),但上面显示的代码应该可以工作,因为指示器已正确初始化并且您将 webview delegate 设置为那里的视图控制器,我让它在我的一些应用程序上工作,我使用网络视图和指示器来指示它何时加载......
归档时间: |
|
查看次数: |
34568 次 |
最近记录: |