获取UITableView中最顶部的标题或索引的最准确方法是什么?我不是指索引0处的部分,而是滚动时当前固定在顶部的部分标题。
答案 0 :(得分:13)
您可以按照以下方式获取屏幕顶部的部分:
NSUInteger sectionNumber = [[tableView indexPathForCell:[[tableView visibleCells] objectAtIndex:0]] section];
但是,这种方法对您来说可能不是最佳的,因为当它处于两个标题之间的过渡期时,它会得到奇怪的数字。只要您在过渡期间不需要知道该部分就应该没问题。 我希望这是你想要的,
答案 1 :(得分:3)
我相信不是查询visibleCells,而是以下列方式询问索引路径更好:
NSInteger section = [[[self.tableView indexPathsForVisibleRows] firstObject] section];
您可以根据需要在其中一种UIScrollViewDelegate
方法中使用此代码。
答案 2 :(得分:1)
Swift版本
首先使用 (当前固定)或最后(最后显示)
if let section:Int = tableView.indexPathsForVisibleRows?.last?.section {
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: section), atScrollPosition: UITableViewScrollPosition.None, animated: true)
}
答案 3 :(得分:-1)
让您的类实现UIScrollViewDelegate,并实现以下功能。 它将确保仅在tableview停止滚动时检索节。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
{
// retrieve section here
section = [[[self.tableview visibleCells] objectAtIndex:0] section];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// retrieve section here
section = [[[self.tableview visibleCells] objectAtIndex:0] section];
}