Получить текущий закрепленный раздел UITableView - PullRequest
9 голосов
/ 02 марта 2012

Какой самый точный способ получить заголовок или индекс самого верхнего раздела в UITableView?Я имею в виду не раздел с индексом 0, а заголовок раздела, который в данный момент закреплен сверху при прокрутке.

Ответы [ 4 ]

13 голосов
/ 02 марта 2012

Вы можете получить раздел в верхней части экрана следующим образом:

     NSUInteger sectionNumber = [[tableView indexPathForCell:[[tableView visibleCells] objectAtIndex:0]] section];

Но этот метод может быть не оптимальным для вас, потому что он получит странное число, когда он находится в переходепериод между двумя заголовками.Пока вам не нужно знать раздел во время перехода, вы должны быть в порядке.Я надеюсь, что это то, что вы ищете,

3 голосов
/ 29 октября 2014

Я считаю, что вместо запросов к visibleCells лучше запросить пути индекса следующим образом:

NSInteger section = [[[self.tableView indexPathsForVisibleRows] firstObject] section];

Вы можете использовать этот код в одном из UIScrollViewDelegate методов в соответствии с вашими потребностями.

1 голос
/ 25 апреля 2016

Swift версия

Используйте первый (текущий закрепленный) или последний (последний отображенный)

  if let section:Int = tableView.indexPathsForVisibleRows?.last?.section {

      tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: section), atScrollPosition: UITableViewScrollPosition.None, animated: true)

  }
0 голосов
/ 03 марта 2012

Пусть ваш класс реализует UIScrollViewDelegate и реализует следующие функции. Это обеспечит получение раздела только тогда, когда просмотр таблицы прекратит прокрутку.

- (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...