0

アプリの起動時に JSON を読み込みます。

MBProgressHUD は、データの読み込み中にスピナーを正しく表示します。

また、JSON のリロードをトリガーする更新ボタンもあります。スピナーを表示したいと思います。データは更新されますが、スピナーは表示されません。

私が間違っていることは何か分かりますか?

ここに私の ViewController.m の関連コードがあります

- (void)viewDidLoad
{
    [super viewDidLoad];
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [self fetchPosts];
}

- (IBAction)refresh:(id)sender {
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; // NOT WORKING
    [self refreshPosts];
}

- (void)fetchPosts
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://mysite.com/app/"]];

        NSError* error;

        posts = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.collectionView reloadData];
        });
    });
}

- (void)refreshPosts
{
    NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://mysite.com/app/"]];

    NSError* error;

    posts = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.collectionView reloadData];
    });
}
4

1 に答える 1

2

ディスパッチ ブロック内に refreshPosts のコード全体 (reloadData の呼び出しだけでなく) を入れてみましたか? 私は確かにそれが機能するかどうかを確認しようとします. データのダウンロードが原因で UI がフリーズし、HUD が台無しになる可能性があると思います。

于 2012-10-15T01:48:48.533 に答える