3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個贊
由于自編寫答案以來對UITableView實(shí)現(xiàn)進(jìn)行了一些更改,因此該答案似乎不再有效??吹竭@個評論:UITableView完成請求數(shù)據(jù)時得到通知?
我一直在玩這個問題困擾了幾天,覺得子類UITableView的reloadData是最好的方法:
- (void)reloadData {
NSLog(@"BEGIN reloadData");
[super reloadData];
NSLog(@"END reloadData");
}
reloadData在表重新加載其數(shù)據(jù)之前不會結(jié)束。因此,當(dāng)?shù)诙€NSLog被觸發(fā)時,表視圖實(shí)際上已經(jīng)完成了對數(shù)據(jù)的查詢。
我已經(jīng)細(xì)分UITableView為在之前和之后將方法發(fā)送給委托reloadData。它像一種魅力。

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊
這個答案實(shí)際上不是解決方案。起初它似乎起作用了,因?yàn)橹匦录虞d可能很快發(fā)生,但是實(shí)際上,在數(shù)據(jù)完全完成重新加載之后,不一定會調(diào)用完成塊-因?yàn)閞eloadData不會阻止。您可能應(yīng)該尋找更好的解決方案。
為了擴(kuò)展@Eric MORAND的答案,讓我們輸入一個完成代碼塊。誰不喜歡一個代碼塊?
@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
}];
- 3 回答
- 0 關(guān)注
- 700 瀏覽
添加回答
舉報