2012-12-18 58 views
0

我錯過了關於如何與UIActivityIndicatorViewNSTimer一起工作的內容。不理解UIActivityIndi​​catorView如何與NSTimer配合工作

我已經添加了這個UIActivityIndicatorView在Interface Builder以下設置:

UIActivityIndicatorView UIActivityIndicatorView settings

UIWebView被實例化self.webVUIActivityIndicatorViewself.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負載,無活動指示燈顯示出來。我做錯了什麼或離開?

感謝您的幫助,夥計們。

+1

指標是否可見?它是否位於視圖層次結構的Web視圖之上? – jsd

+0

將一條日誌語句放入else子句中,以查看代碼是否達到該點。 – rdelmar

回答

3

我真的不確定UIActivityIndicatorView的行爲應該是什麼,如果你反覆調用start/stop的話。我有理由相信這並不意味着使用這種方式:)

所以,即使你的問題是特定於NSTimerUIActivityIndicatorView,它可能有助於瞭解你應該接近不同的解決方案。

而不是使用每半秒反覆調用[self.indicator startAnimating]的計時器,您應該使用webview委託方法來打開和關閉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

這就是我觀看YouTube Xcode「教程」所得到的....非常感謝。 –

3

可能有幾個原因。它的加載速度可能非常快,以至於加載已經完成,或者根本不會加載,因爲URL有問題。

這不是你的問題的原因,但你永遠不會使你的計時器無效,你應該這樣做。

我還打算說,你應該使用委託方法而不是定時器,但pdriegen打我。

相關問題