UITableViewController - 限制滚动

时间:2012-10-11 16:16:33

标签: iphone objective-c xcode scroll uitableview

我有一个UITableViewController,其中包含查看表视图部分

查看包含一个标签,指示表格的标题。

我的问题是该滚动包含查看。我想要的是保持查看静态(从滚动中排除)并仅滚动。 (我使用静态细胞)

感谢。

3 个答案:

答案 0 :(得分:0)

UITableViewController的层次结构是

- UIView
-- UIScrollView
---- UITableView

最初在修改项目时你在UITableView中,所以你需要添加你不想滚动到UIView的部分(在我们的scrollView之外)。所以你需要像这样召唤超级几次:

[self.superview.superview.view addSubview:viewThatDoesNotScroll];

答案 1 :(得分:0)

由于UITableViewUIScrollView的子类:

- (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来管理自定义视图控制器中的不同视图和不同视图控制器。