等到UITableView完成reloadData

时间:2011-06-27 09:27:16

标签: objective-c multithreading uitableview tableview

  

可能重复:
  Get notified when UITableView has finished asking for data?

是否可以在tableview完成后获取通知,以便在reloadData方法之后重新加载其数据?或者可以等到tableview完成重装?

由于

2 个答案:

答案 0 :(得分:2)

有一个非常简单的解决方案是检查您是否处于委托的最后一次迭代

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

最后一次迭代完成后,在那里添加你的代码

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([indexPath row] == lastRow){
          any code you want

    }
}

由于

答案 1 :(得分:1)

让我们完成一个完整的区块。谁不爱一块?

@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
                                        }];

编辑:

请注意,以上只是解决方案的一半。在主线程上同步更新节和行的数量以及行高度,因此使用上面的代码,完成将在某些UI部分完成时回调。但是从数据源加载的数据是异步的 - 所以这个答案真的不是@Michal想要的。