如何检测UITableView的加载结束

我想在加载完成时更改表的偏移量,并且该偏移量取决于表上加载的单元格数。

无论如何,SDK上是否知道uitableview加载何时完成?我既没有看到委托,也没有看到数据源协议。

我无法使用数据源的计数,因为仅可见单元的加载。


翻阅古今
浏览 701回答 3
3回答

慕莱坞森

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:。

素胚勾勒不出你

我总是使用这个非常简单的解决方案:-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{    if([indexPath row] == lastRow){        //end of loading        //for example [activityIndicator stopAnimating];    }}

白衣非少年

Swift 3和4版本:func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {    if let lastVisibleIndexPath = tableView.indexPathsForVisibleRows?.last {        if indexPath == lastVisibleIndexPath {            // do here...        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS