UIView ScrollToTop - PullRequest
       6

UIView ScrollToTop

1 голос
/ 14 февраля 2011

У меня есть UIView, который имеет некоторые элементы (UIButtons, UILabels и т. Д.) Для создания «заголовка», который находится над UITableView.Есть также панель инструментов с сегментированным управлением внутри.Идея заключается в том, что в одном представлении есть две «страницы» данных, которые показывают разные ячейки в таблице, в зависимости от того, какие сегментированные кнопки управления выбраны.

Поскольку таблица растягивается на экране iPhone,пользователи будут прокручивать таблицу, в которой элементы в «заголовке» прокручиваются в верхней части экрана (это желательно и нужно).Однако, если пользователь затем нажимает на другую сегментированную кнопку управления (чтобы переключать «страницы»), я не могу найти способ программно прокрутить весь вид назад вверх, чтобы UIButtons, UILables и т. Д. В «заголовок "вверху (над таблицей) появится.Я могу прокрутить до верхней части таблицы, используя [tableview ScrollToTop], но я ищу что-то вроде [self.view ScrollToTop] ... Жаль, что такого нет в UIView.

Кто-нибудь есть идеи, как я мог бы достичь желаемого эффекта здесь?Большое спасибо ...

Ответы [ 2 ]

0 голосов
/ 03 апреля 2011

Почему бы не установить UIView, который вы используете для заголовка, как tableHeaderView UITableView?

tableView.tableHeaderView = yourUIViewHeader;

Вы могли бы даже поместить туда свой сегментированный контроль, если это то, что вы ищете. Лично мне нравится всегда держать сегментированные контроллеры видимыми, поскольку они являются важным аспектом навигации. Поэтому я бы поместил его в поле зрения вашего контроллера над вашим столом.

Как сказал Джереми, вы можете установить позицию прокрутки с помощью contentOffset. Если у вас есть две «страницы» контента или два источника данных, совместно использующих одну таблицу, вы можете более убедительно подделать внешний вид двух таблиц, сохранив смещение каждой «страницы» в качестве переменных экземпляра (CGPoints) и установив contentOffset таблицы для выбранной страницы. когда пользователь переключает сегменты. Таким образом, позиция прокрутки сохраняется на «страницах».

- (void) yourSegmentedControlAction {
  switch (self.yourSegmentedControl.selectedSegmentIndex) {
    case 0: // Page 1
      self.pageTwoOffset = self.tableView.contentOffset;
      // set your page one datasource
      self.tableView.contentOffset = self.pageOneOffset;
      break;
    case 1: // Page 2
      self.pageOneOffset = self.tableView.contentOffset;
      // set your page two datasource
      self.tableView.contentOffset = self.pageTwoOffset;
  }
}
0 голосов
/ 14 февраля 2011

Вам следует рассмотреть либо реализацию UIScrollView между вашим UIView и другими элементами, либо сделать прокрутку таблицы в пределах фиксированных границ, чтобы все элементы пользовательского интерфейса были видны все время. Вы можете прокрутить UIScrollView, установив для contentOffset значение CGPointZero

см .: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html

...