我遗漏了UIActivityIndicatorView
和NSTimer
如何协同工作的内容。
我在Interface Builder中添加了UIActivityIndicatorView
,其中包含以下设置:
UIWebView
被{(1}}实例化,self.webV
被UIActivityIndicatorView
实例化。
我在实现文件中有以下代码:
self.indicator
但是当-(void)viewDidLoad
{
[super viewDidLoad];
//Create UIWebView.
if (!self.webV)
{
self.webV = [[UIWebView alloc] init];
}
self.webV.delegate = self;
//Load web page.
NSString *baseURLString = @"myURL.com";
NSString *urlString = [baseURLString stringByAppendingPathComponent:@"myURL.com"];
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0/2.0 target:self selector:@selector(timerLoad) userInfo:nil repeats:YES];
[self connectWithURL:urlString andBaseURLString:baseURLString];
}
-(void)timerLoad
{
if (!self.webV.loading)
{
[self.indicator stopAnimating];
}
else
{
[self.indicator startAnimating];
}
}
加载时,没有显示任何活动指示符。我做错了什么或遗漏了什么?
感谢大家的帮助。
答案 0 :(得分:3)
如果您反复调用start / stop,我真的不确定UIActivityIndicatorView
的行为应该是什么。我有理由相信它并不意味着以这种方式使用:)
因此,即使您的问题仅针对NSTimer
和UIActivityIndicatorView
,但了解您应以不同方式处理解决方案可能会有所帮助。
您应该使用webview委托方法来打开和关闭[self.indicator startAnimating]
,而不是使用每半秒重复调用UIActivityIndicatorView
的计时器。
-(void)viewDidLoad
{
[super viewDidLoad];
//Create UIWebView.
if (!self.webV)
{
self.webV = [[UIWebView alloc] init];
}
self.webV.delegate = self;
//Load web page.
NSString *baseURLString = @"myURL.com";
NSString *urlString = [baseURLString stringByAppendingPathComponent:@"myURL.com"];
//self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0/2.0 target:self selector:@selector(timerLoad) userInfo:nil repeats:YES];
[self connectWithURL:urlString andBaseURLString:baseURLString];
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
//start animating
[self.indicator startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
//stop animating
[self.indicator stopAnimating];
}
答案 1 :(得分:3)
可能有几个原因。加载速度很快,加载已经完成,或者根本没有加载,因为URL有问题。
这不是问题的原因,但是你永远不会使你的计时器无效。
我还要指出你应该使用委托方法而不是计时器,但是pdriegen打败了我。