3 回答
TA贡献1804条经验 获得超3个赞
由于自编写答案以来对UITableView实现进行了一些更改,因此该答案似乎不再有效。看到这个评论:UITableView完成请求数据时得到通知?
我一直在玩这个问题困扰了几天,觉得子类UITableView的reloadData是最好的方法:
- (void)reloadData {
NSLog(@"BEGIN reloadData");
[super reloadData];
NSLog(@"END reloadData");
}
reloadData在表重新加载其数据之前不会结束。因此,当第二个NSLog被触发时,表视图实际上已经完成了对数据的查询。
我已经细分UITableView为在之前和之后将方法发送给委托reloadData。它像一种魅力。
TA贡献1993条经验 获得超5个赞
这个答案实际上不是解决方案。起初它似乎起作用了,因为重新加载可能很快发生,但是实际上,在数据完全完成重新加载之后,不一定会调用完成块-因为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 关注
- 662 浏览
添加回答
举报