获取UITableView的当前固定部分

时间:2012-03-02 19:21:08

标签: ios5 uitableview

获取UITableView中最顶部的标题或索引的最准确方法是什么?我不是指索引0处的部分,而是滚动时当前固定在顶部的部分标题。

4 个答案:

答案 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];
}