2012-10-11 66 views
0

我有一个UITableViewController它包含一个查看和一个表视图部分UITableViewController - 限制滚动

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

我的问题是,滚动包括查看。我想要的是保持查看静态(排除滚动)并仅滚动。 (我使用静态单元格)

谢谢。

+0

将视图放在'UITableView'之外。 – robertvojta

+1

他不能在'UITableViewController'中做到这一点。 – akashivskyy

+0

他不能做什么?只是不要把视图放入'UITableView [Cell]'就是这样。 – robertvojta

回答

0

一个UITableViewController的层次是

- UIView 
-- UIScrollView 
---- UITableView 

最初,你在UITableView的修改时的物品,所以你要补充一点,你不想滚动到UIView的部分(外面是我们的scrollView)。所以你需要像这样调用超级好几次:

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

+0

对不起,但我不明白你的意思。你能否给我更多的细节。我使用静态单元格,当我创建自定义类时,我会得到“静态表格视图只有在嵌入UITableViewController实例时才有效”。谢谢。 – tchike

+0

对不起,但这不是UITableViewController的视图层次结构。 UITableViewController的视图属性指向UITableView记录。而UITableView是UIScrollView的一个子类。你不应该在UIS​​crollView中放置一个UITableView对象。 – J2theC

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

0

不要UITableViewController。使用UIViewController并管理UITableView对象之外的视图。如果需要,还可以实现UIViewControllerContainment来管理自定义视图控制器中的不同视图和不同视图控制器。