如何知道UITableView已经加载完成

来源:互联网 发布:php接收get数据 编辑:程序博客网 时间:2024/06/10 11:11

问题:

当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];        });    }}


0 0