为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测UITableView的加载结束

如何检测UITableView的加载结束

iOS
翻阅古今 2019-10-15 14:49:50
我想在加载完成时更改表的偏移量,并且该偏移量取决于表上加载的单元格数。无论如何,SDK上是否知道uitableview加载何时完成?我既没有看到委托,也没有看到数据源协议。我无法使用数据源的计数,因为仅可见单元的加载。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

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:用于更流畅的用户界面(单个单元格通常在willDisplay:调用后显示很快)。您也可以尝试使用tableView:didEndDisplayingCell:。


查看完整回答
反对 回复 2019-10-15
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我总是使用这个非常简单的解决方案:


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

{

    if([indexPath row] == lastRow){

        //end of loading

        //for example [activityIndicator stopAnimating];

    }

}


查看完整回答
反对 回复 2019-10-15
?
白衣非少年

TA贡献1155条经验 获得超0个赞

Swift 3和4版本:


func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

    if let lastVisibleIndexPath = tableView.indexPathsForVisibleRows?.last {

        if indexPath == lastVisibleIndexPath {

            // do here...

        }

    }

}


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 697 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信