UIView ScrollToTop

时间:2011-02-14 01:08:13

标签: ios uitableview scroll uisegmentedcontrol

我有一个UIView,它有一些元素(UIButtons,UILabels等)来创建一个位于UITableView顶部的“标题”。还有一个工具栏,里面有分段控件。这里的想法是单个视图有两个“页面”数据,它们显示表中的不同单元格,具体取决于选择的分段控制按钮。

由于桌子伸出iPhone的屏幕,用户将滚动表格,该表格滚动屏幕顶部“标题”中的元素(这是期望的和预期的)。但是,如果用户然后点击其他分段控制按钮(切换“页面”),我似乎无法找到一种方法以编程方式将整个视图滚动回顶部,以便UIButtons和UILables等在“标题“在顶部(表格上方)出现。我可以使用[tableview ScrollToTop]滚动到表格的顶部,但我要找的是[self.view ScrollToTop] ...太糟糕了,UIView中没有这样的东西。

有谁知道如何在这里达到预期的效果?非常感谢......

2 个答案:

答案 0 :(得分:0)

您应该考虑在UIView和其他元素之间实现UIScrollView,或者使表在固定边界内滚动,以便所有UI元素始终可见。您可以通过将contentOffset设置为CGPointZero

来滚动UIScrollView

请参阅:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html

答案 1 :(得分:0)

为什么不设置你用作标题的UIView作为UITableView的tableHeaderView?

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;
  }
}