0

私はどのように一緒UIActivityIndicatorViewに働くかについて何かが欠けています。NSTimer

UIActivityIndicatorViewこれを次の設定で Interface Builder に追加しました。

UIActivityIndi​​catorView UIActivityIndi​​catorView の設定

はasおよびasUIWebViewとしてインスタンス化されます。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ロードすると、アクティビティ インジケータは表示されません。私は何を間違っているか、または除外していますか?

助けてくれてありがとう、皆さん。

4

2 に答える 2

3

UIActivityIndicatorViewstart/stop を繰り返し呼び出した場合の動作がどのようなものになるのか、私にはよくわかりません。私はそれがそのように使用されることを意図していないことを合理的に確信しています:)

したがって、あなたの質問は と に固有のNSTimerものUIActivityIndicatorViewですが、ソリューションに別の方法でアプローチする必要があることを理解しておくと役立つ場合があります。

[self.indicator startAnimating]0.5 秒ごとに繰り返し呼び出すタイマーを使用する代わりに、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];
    }
于 2012-12-18T21:08:11.863 に答える
3

いくつかの理由が考えられます。ロードがすでに完了しているほど高速にロードされるか、URL に問題があるためにまったくロードされない可能性があります。

これは問題の原因ではありませんが、タイマーを無効にすることはありません。

また、タイマーの代わりにデリゲート メソッドを使用する必要があることも指摘するつもりでしたが、pdriegen は私を打ち負かしました。

于 2012-12-18T21:09:35.000 に答える