不了解UIActivityIndi​​catorView如何与NSTimer配合使用

时间:2012-12-18 20:24:23

标签: objective-c ios uiwebview nstimer uiactivityindicatorview

我遗漏了UIActivityIndicatorViewNSTimer如何协同工作的内容。

我在Interface Builder中添加了UIActivityIndicatorView,其中包含以下设置:

UIActivityIndicatorView UIActivityIndicatorView settings

UIWebView被{(1}}实例化,self.webVUIActivityIndicatorView实例化。

我在实现文件中有以下代码:

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]; } } 加载时,没有显示任何活动指示符。我做错了什么或遗漏了什么?

感谢大家的帮助。

2 个答案:

答案 0 :(得分:3)

如果您反复调用start / stop,我真的不确定UIActivityIndicatorView的行为应该是什么。我有理由相信它并不意味着以这种方式使用:)

因此,即使您的问题仅针对NSTimerUIActivityIndicatorView,但了解您应以不同方式处理解决方案可能会有所帮助。

您应该使用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打败了我。