0

Web サービスからロードされたデータを表示するために使用しているテーブルビューがあります。読み込みが速い場合もあれば、時間がかかる場合もあります。ロード中、テーブルビューには空白の画面が表示されます (私の場合は灰色の画面です)。テーブルビューの背景ビューに、読み込みを示すシンプルな画像と、アニメーション化して回転させる読み込みアイコンがある単純な画像を表示したいのですが、まったく表示されません。これが私のコードです:

UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)];
[backgroundView setBackgroundColor:[UIColor colorWithRed:227.0 / 255.0 green:227.0 / 255.0 blue:227.0 / 255.0 alpha:1.0]];

self.tableLoading.image = [UIImage imageNamed:@"loading.png"];
self.tableLoading.frame = CGRectMake(145, 80, 30, 30);
[backgroundView addSubview:self.tableLoading];

[self.feedTableView setBackgroundView:backgroundView];

背景ビューは期待どおりに表示されるため、灰色の背景ですが、画像をまったく表示できません。

助言がありますか?これは単純な問題のように思えますが、私はすでに長い時間を費やしてきましたが、成功していません。前もって感謝します!

4

2 に答える 2

0

Web サービスの呼び出しはどのように行っていますか? 非同期ブロックで行われたと思います。AFNetworking NSOperationブロックのようなものでしょうか。もしそうなら、画像を背景としてどこに設定していますか?すべてのユーザー インターフェイス (UI) の処理はバックグラウンド スレッドで行うべきではありません。UI に関与する必要があるのはメイン スレッドだけであるため、メイン スレッドで行う必要があります。

次のことを試してください。

 dispatch_async(dispatch_get_main_queue(), ^{

    UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)];
    [backgroundView setBackgroundColor:[UIColor colorWithRed:227.0 / 255.0 green:227.0 / 255.0 blue:227.0 / 255.0 alpha:1.0]];

    self.tableLoading.image = [UIImage imageNamed:@"loading.png"];
    self.tableLoading.frame = CGRectMake(145, 80, 30, 30);
    [backgroundView addSubview:self.tableLoading];

    [self.feedTableView setBackgroundView:backgroundView];

});

リクエストの開始時に背景画像の表示UITableViewを開始し、リクエストがネットワーキングを終了した直後にそれを閉じることができます。

たとえば、リクエストが完了したときに呼び出されるハンドラーを持つSLRequest送信リクエストメソッドが呼び出さperformRequestWithHandler:れ、そのハンドラー内で、カスタムインジケーターを閉じるか、ビューコントローラーから削除できます。

この助けを願っています。

于 2013-08-01T02:58:08.127 に答える