可能性の重複:
Get notified when UITableView has finished asking for data?待機
は、テーブルビューの仕上げはreloadDataメソッドの後にそのデータを再ロードするときに通知を取得することが可能ですか?または、テーブルビューの終了が再ロードされるまで待つことは可能ですか?
おかげ
可能性の重複:
Get notified when UITableView has finished asking for data?待機
は、テーブルビューの仕上げはreloadDataメソッドの後にそのデータを再ロードするときに通知を取得することが可能ですか?または、テーブルビューの終了が再ロードされるまで待つことは可能ですか?
おかげ
非常に簡単な解決策はあり終わりで終了最後の反復が
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == lastRow){
any code you want
}
}
そこにコードを追加した後は、デリゲート
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
の最後の反復であるかどうかを確認することです
ありがとう
ブロック?
@interface DUTableView : UITableView
- (void) reloadDataWithCompletion:(void (^) (void))completionBlock;
@end
と...
#import "DUTableView.h"
@implementation DUTableView
- (void) reloadDataWithCompletion:(void (^) (void))completionBlock {
[super reloadData];
if(completionBlock) {
completionBlock();
}
}
@end
使用法:
[self.tableView reloadDataWithCompletion:^{
//do your stuff here
}];
EDIT:上記の半分しか解決すること
注意。セクションと行の数と行の高さはメインスレッド上で同期して更新されるため、上記のコードを使用すると、UI部分の一部が完了したときに補完がコールバックされます。しかし、データソースからのデータロードは非同期です。だから、本当にこの答えは、@ Meichalが望んだものではありません。
これは 'reloadData'が終了するのを待つのと同じ問題を抱えていませんか?問題は、テーブルの更新が非同期的に起こり、 '[super reloadData]'が実行された後も継続することです。 – Rob
ええ、そうです。セクションと行の数と行の高さは同期して更新されるため、呼び出しの一部は同期しています。しかし、データソースからのデータロードは非同期です。他人を欺いてはいけないように私の答えを更新します。 – bandejapaisa
ベストソリューション...ありがとうございました。 – harshitgupta
Thx、小さな変更後に動作します。 – Michal
あなたは以下を考慮しましたか? 1) 'UITableView'のドキュメントによると、' reloadData'が呼び出されると、 "テーブルビューは表示されている行だけを再表示します。したがって、 'tableView:willDisplayCell:'は最後の行で呼び出されない可能性があります。 2)この質問とは関係ありませんが、テーブルビューにフッターがある場合は、セルが読み込まれた後に読み込まれる可能性があります。さらに、 'reloadData'はフッタをロードした後にさらに多くの処理を行うことがあります。この場合、' reloadData'が終了したときには正確にはわかりません。 – Antoni
下部の行が表示されず、画面がオフであり、フッターがないため、この問題を解決する方法。私のビューは10行しか保持しておらず、実際には20個(したがって10個のスクリーン)です。私は下の方にスクロールしたい。 –