3 回答

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

TA貢獻1993條經驗 獲得超6個贊
這個答案實際上不是解決方案。起初它似乎起作用了,因為重新加載可能很快發生,但是實際上,在數據完全完成重新加載之后,不一定會調用完成塊-因為reloadData不會阻止。您可能應該尋找更好的解決方案。
為了擴展@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 關注
- 701 瀏覽
添加回答
舉報