Возможно ли использовать UIPageControl для управления перемещением UITableView? - PullRequest
0 голосов
/ 13 мая 2011

Из примера Apple «PageControl» мы можем знать, что UIPageControl может использоваться для управления перемещением страниц в scrollview.

Поскольку UITableView является подклассом UIScrollView, я хочу использовать UIPageControl для управления перемещением ячейки табличного представления, как в «PageControl».

Но не могу найти какой-либо интерфейс делегата для меня, чтобы сделать это.

Вопрос:

Возможно ли это сделать? И почему?

Спасибо

Позвольте мне ответить на мой вопрос:

Программный выбор и прокрутка

Перечисление 6-5. Программный выбор строки

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
    NSIndexPath *scrollIndexPath;
    if (newIndexPath.row + 20 < [timeZoneNames count]) {
        scrollIndexPath = [NSIndexPath indexPathForRow:newIndexPath.row+20 inSection:newIndexPath.section];
    } else {
        scrollIndexPath = [NSIndexPath indexPathForRow:newIndexPath.row-20 inSection:newIndexPath.section];
    }
    [theTableView selectRowAtIndexPath:scrollIndexPath animated:YES
                        scrollPosition:UITableViewScrollPositionMiddle];
}

1 Ответ

2 голосов
/ 13 мая 2011

Конечно, это возможно, но зачем вам это?Табличное представление прокручивается по вертикали, в то время как элемент управления страницы имеет горизонтальную разметку, поэтому он, вероятно, будет выглядеть / чувствовать себя странно.

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

[pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

Затем выполните прокрутку в действии:

- (void)pageChanged:(UIPageControl *)sender {
    float scrollPosition = ((float)sender.currentPage / (float)sender.numberOfPages) * tableView.contentSize.height;
    [tableView scrollRectToVisible:CGRectMake(0, scrollPosition, 1, 1) animated:YES];
}
...