0

右側に詳細ラベルが付いたテーブル ビューがあります。このラベルは、connectionDidFinishLoading 関数の JSON 呼び出しから入力したエンティティによって入力されます。問題は、 cellFromRowAtIndexPath 関数が connectionDidFinishLoading 関数の前に起動するため、ページを再描画する画面をプルダウンするまで、テーブル ビューに値が表示されないことです。これらの関数の両方の最後にテーブル ビューを更新しようとしましたが、うまくいきません。なぜこれが起こっているのか、どうすれば修正できるのか、誰かが私に手がかりを与えることができますか.

初期ロードの様子

画面をプルダウンした後、更新されたビューはどのように見えるか

4

4 に答える 4

1

connectionDidFinishLoading の最後にテーブル データをリロードする必要があります。ふたつのやり方:

最初:

[tableView reloadData];

二番目:

NSArray* rows = [tableView indexPathsForVisibleRows];
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:rows withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
于 2012-10-11T22:21:18.637 に答える
1

reloadDataメインスレッドで呼び出していますか?connectionDidFinishLoadingバックグラウンドスレッドで実行されているようです。

于 2012-10-12T00:30:35.210 に答える
0

reloadData入力した後、tableViewを呼び出します。

于 2012-10-11T22:17:55.343 に答える
0

これでうまくいくはずです。すべての UI の更新と操作は、メイン スレッドから実行する必要があります。

dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
});
于 2015-04-22T21:54:08.070 に答える