2012-12-20 105 views
3

我的UITableView具有固定位置的子视图。但是当我滚动时,滚动条被子视图隐藏。我怎样才能避免这种情况?iOS:通过子视图隐藏的UITableView滚动条

## EDIT ##

self.menuViewRelative = [[UIView alloc] init]; 
self.menuViewRelative.backgroundColor = [UIColor whiteColor]; 
self.menuViewRelative.opaque = YES; 
self.menuViewRelative.frame = CGRectMake(0.0, -1.0, 320.0, 50.0); 
[self.view insertSubview:self.menuViewRelative atIndex:11]; 

此子视图是其他现在高于10子视图和下滚动视图正好1层(所以它显示了滚动指示完美)。

+6

为表格视图设置'scrollIndicatorInsets',使滚动条移动到子视图不会重叠的位置。 例如: - 'self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0,0,7.0,7.0);' – iDev

+2

@ACB您应该做出该答案! –

+0

@ JesseRusak,谢谢。我已添加为答案。我在等待有人给出更好的答案,我也不希望OP错过这个。因此添加为评论。 – iDev

回答

2

您是否使用addSubview:这个?这将使它成为最顶层的子视图,它将覆盖滚动条。如果您改为使用insertSubview:atIndex:并确保它的只是高于表格视图中的其他内容,则它将位于滚动条的下方。

您可能需要覆盖UITableView的layoutSubviews(如我在this related question中描述的那样)并查看表视图的内容,以便将浮动视图保持在表视图单元格上方。

+0

哇:)我刚刚有一个问题:第一个分隔线在子视图上滚动。我通过添加'[self.view bringSubviewToFront:self.menuViewRelative];'解决了这个问题。但是当我调用该代码段时,滚动条被隐藏。 – filou

+0

是的,你不能调用'bringSubviewToFront:'因为它会覆盖滚动指标;您需要使用'insertSubview:atIndex:'将它移动到layoutSubviews实现中滚动指示符的下方。 –

+0

以及如何实现两种功能的结果?就像我说的:第一个分隔符在子视图上。 – filou

4

根据Jesse Rusak的评论添加答案。

为表格视图设置scrollIndicatorInsets,以便滚动条将移动到子视图不会重叠的位置。

对于如: -

self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, 7.0); 
+2

很棒的答案。问题是:子视图水平覆盖整个屏幕(320像素)。应该是一个'浮动菜单'。 – filou