我有一个UIView,它有一些元素(UIButtons,UILabels等)来创建一个位于UITableView顶部的“标题”。还有一个工具栏,里面有分段控件。这里的想法是单个视图有两个“页面”数据,它们显示表中的不同单元格,具体取决于选择的分段控制按钮。
由于桌子伸出iPhone的屏幕,用户将滚动表格,该表格滚动屏幕顶部“标题”中的元素(这是期望的和预期的)。但是,如果用户然后点击其他分段控制按钮(切换“页面”),我似乎无法找到一种方法以编程方式将整个视图滚动回顶部,以便UIButtons和UILables等在“标题“在顶部(表格上方)出现。我可以使用[tableview ScrollToTop]滚动到表格的顶部,但我要找的是[self.view ScrollToTop] ...太糟糕了,UIView中没有这样的东西。
有谁知道如何在这里达到预期的效果?非常感谢......
答案 0 :(得分:0)
您应该考虑在UIView和其他元素之间实现UIScrollView,或者使表在固定边界内滚动,以便所有UI元素始终可见。您可以通过将contentOffset设置为CGPointZero
来滚动UIScrollView答案 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;
}
}