我有一个 UITableViewController ,其中包含一个View和一个Table View Section。
View包含一个标签,指示表的标题。
我的问题是滚动包含View。我想要的是保持View静态(从滚动中排除)并只滚动Table。(我使用静态单元格)
谢谢。
我有一个 UITableViewController ,其中包含一个View和一个Table View Section。
View包含一个标签,指示表的标题。
我的问题是滚动包含View。我想要的是保持View静态(从滚动中排除)并只滚动Table。(我使用静态单元格)
谢谢。
因为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:
方法中。每当用户拖动滚动视图时都会调用此方法,因此您可以简单地将origin.y
子视图的 设置contentOffset.y
为滚动视图。
The hierarchy of a UITableViewController is
- UIView
-- UIScrollView
---- UITableView
Initially you're in the UITableView when modifying items, so you'll want to add the portion that you do not want to scroll to the UIView (outside of our scrollView). So you'll need to call super a couple times like this:
[self.superview.superview.view addSubview:viewThatDoesNotScroll];
不要 UITableViewController。使用 UIViewController 并管理 UITableView 对象之外的视图。如果需要,还可以实现 UIViewControllerContainment 来管理自定义视图控制器内的不同视图和不同的视图控制器。