0

UIActivityIndicatorViewNSTimer이 함께 작동하는 방식에 대해 뭔가 빠졌습니다.UIActivityIndicatorView가 NSTimer와 함께 작동하는 방식을 이해하지 못했습니다.

나는 다음과 같은 설정으로 인터페이스 빌더에서이 UIActivityIndicatorView를 추가했습니다 :

UIActivityIndicatorView UIActivityIndicatorView settings

UIWebViewself.webV로 인스턴스화 self.indicatorUIActivityIndicatorView된다.

-(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

표시가 보이나요? 보기 계층 구조의 웹보기 상단에 있습니까? – jsd

+0

else 절에 log 문을 넣어 코드가 그 지점에 도달했는지 확인하십시오. – rdelmar

답변

3

반복적으로 시작/중지를 호출하면 UIActivityIndicatorView의 동작이 무엇인지 잘 모르겠습니다. 나는 그 방법으로 사용하기위한 것이 아니라고 합리적으로 확신합니다 :)

귀하의 질문이 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이 나를 이길 것입니다.

관련 문제