我有一个UITableViewController,其中包含查看和表视图部分。
查看包含一个标签,指示表格的标题。
我的问题是该滚动包含查看。我想要的是保持查看静态(从滚动中排除)并仅滚动表。 (我使用静态细胞)
感谢。
答案 0 :(得分:0)
UITableViewController的层次结构是
- UIView
-- UIScrollView
---- UITableView
最初在修改项目时你在UITableView中,所以你需要添加你不想滚动到UIView的部分(在我们的scrollView之外)。所以你需要像这样召唤超级几次:
[self.superview.superview.view addSubview:viewThatDoesNotScroll];
答案 1 :(得分:0)
由于UITableView
是UIScrollView
的子类:
- (void)viewDidLoad {
[super viewDidLoad];
// mySubview is an instance variable, declared in .h file
[self.tableView addSubview:mySubview];
// here goes the rest of your code
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if(scrollView == self.tableView) {
mySubview.frame = CGRectMake(mySubview.frame.origin.x, scrollView.contentOffset.y, mySubview.frame.size.width, mySubview.frame.size.height);
}
}
代码来自WWDC '10或'11(我不记得了),所以我确信这是最合适的方式。
说明:在-viewDidLoad
中,您可以创建视图并将其添加为tableView的子视图。您可以在-loadView
或-init
中执行此操作 - 这无关紧要。最重要的行是-scrollViewDidScroll:
方法。用户拖动scrollView时会调用此方法,因此您只需将子视图的origin.y
设置为scrollView的contentOffset.y
即可。
答案 2 :(得分:0)
不要UITableViewController。使用UIViewController并管理UITableView对象之外的视图。如果需要,还可以实现UIViewControllerContainment来管理自定义视图控制器中的不同视图和不同视图控制器。