2012-12-20 103 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