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:。
TA贡献1827条经验 获得超9个赞
我总是使用这个非常简单的解决方案:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == lastRow){
//end of loading
//for example [activityIndicator stopAnimating];
}
}
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...
}
}
}
- 3 回答
- 0 关注
- 697 浏览
添加回答
举报