1

Web サイトから JSON データをダウンロードしてテーブル ビューに表示する iOS 6 プログラムを作成しています。ユーザーにアドレスを入力してからボタンを押すように求めます。そのボタンでアラート ビューが表示され、データがダウンロードされます。

私の問題は、ダウンロードが完了するまでアラート ビューが表示されないことです。ダウンロード方法でアラートビューを作成してみましたが、同じ問題があります。私がやりたいことは可能ですか?はいの場合、私は何か間違ったことをしていますか?

ご協力いただきありがとうございます。

4

3 に答える 3

1

出力は次のようになります。読み込んでいます....

まず、ここから MBProgressHUD.h と MBProgressHUD.m をインポートします。

次に、ViewController.h に次のコードを記述します。

#import <UIKit/UIKit.h>
#import "MBProgressHUD.h"

@interface ViewController : UIViewController
{

   MBProgressHUD *HUD;

}

次に、ViewController.m に次のメソッドを記述します。

//To Add Loading View on current View

- (void)showOnWindow {

// The hud will disable all input on the view
    HUD = [[MBProgressHUD alloc] initWithView:self.view.window];

// Add HUD to screen 

    [self.view addSubview:HUD]; 

// Register for HUD callbacks so we can remove it from the window at the right time

    HUD.labelText = @"Loading...";

// Show the HUD while the provided method executes in a new thread

   [HUD showWhileExecuting:@selector(yourtask) onTarget:self withObject:nil animated:YES];
}

それで、

// To Remove the Loading View from current view

- (void)removeOnWindow {

// Do something useful in here instead of sleeping ...

   [HUD removeFromSuperview];

}

次に、メソッド onClick イベントを呼び出します....

// Add Loading View

- (IBAction)SetSignIn:(id)sender {

     [self showOnWindow];

}

// yourtask method

-(void)yourtask {

   @try{

     // Do Whatever you want
     // You can call webservices also

  }
  @catch (NSException *e) {

    NSLog(@"Error");

  }

  @finally{

  [self removeOnWindow];  

  }

}
于 2013-07-29T09:31:03.610 に答える
0

問題を解決する方法を見つけました。コードを使用してイベントの優先度を変更するだけでした:

        /*
          Setup indicator and show it
        */


    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        /*
          Download the data
        */

        dispatch_async(dispatch_get_main_queue(), ^{
            /*
          Remove the Alert View
            */

    });
});

私を助けてくれてありがとう。

于 2013-07-29T08:24:48.917 に答える
0

ありがとうjrock007

それは動作します:

問題を解決する方法を見つけました。コードを使用してイベントの優先度を変更するだけでした:

    /*
      Setup indicator and show it
    */


dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    /*
      Download the data
    */

    dispatch_async(dispatch_get_main_queue(), ^{
        /*
      Remove the Alert View
        */

});

});

于 2014-01-21T18:22:30.187 に答える