0

我错过了一些关于如何UIActivityIndicatorView一起NSTimer工作的东西。

UIActivityIndicatorView在 Interface Builder 中添加了这个,设置如下:

UIActivityIndi​​catorView UIActivityIndi​​catorView 设置

UIWebView实例化为self.webVUIActivityIndicatorViewas 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];
    }
}

但是当UIWebView加载时,没有活动指示器出现。我做错了什么或遗漏了什么?

谢谢你们的帮助,伙计们。

4

2 回答 2

3

如果您反复调用它的启动/停止,我真的不确定它的行为UIActivityIndicatorView应该是什么。我有理由确定它不应该那样使用:)

因此,即使您的问题是特定于NSTimerandUIActivityIndicatorView的,了解您应该以不同的方式处理您的解决方案可能会有所帮助。

您应该使用 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];
    }
于 2012-12-18T21:08:11.863 回答
3

可能有几个原因。它可能加载得如此之快以至于加载已经完成,或者它根本没有加载,因为 URL 有问题。

这不是您的问题的原因,但您永远不会使您的计时器无效,您应该这样做。

我还打算指出你应该使用委托方法而不是计时器,但是 pdriegen 打败了我。

于 2012-12-18T21:09:35.000 回答