问题:
当table加载完所有的cell后,我想改变table的offset。
在sdk中有知道uitableview加载完成的方法吗?我在data source协议里面没有看到任何相关的代理方法。
答案:
补充@RichX的回答,lastRow 也可以使用 [tableView numberOfRowsInSection: 0] - 1 或者((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row
所以这里的代码应该是:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
//end of loading
//for example [activityIndicator stopAnimating];
}
}
++++++++++++++++++++++++++++++++++++++
笔者补充
++++++++++++++++++++++++++++++++++++++
由于willDisplayCell是异步调用的,所以在上面的block里面不能即时更新UI,最好使用GCD通过主线程加上你的代码:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
//end of loading
dispatch_async(dispatch_get_main_queue,^{
//for example [activityIndicator stopAnimating];
});
}
}