2012-03-20 167 views
2

我跟着this post使我的部分標題在滾動tableview時出現在視圖之外。但是,當滾動回頂端時,標題不會返回到視圖中。永遠。鑑於我完全按照解決方案(並且我沒有在其他地方設置contentInset),我很困惑。任何人都可以將我指向正確的方向嗎?這裏是我的代碼:UITableView部分標題滾動

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = [self tableView:self.agendaDetailTable heightForHeaderInSection:0]; 

    if (p.y <= height && p.y > 0) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
} 
+0

該代碼段適用於飛機和分組表格。嘗試記錄你的'p.y'和'高度'。 – 2012-03-20 21:22:56

+0

第一部分中的標題用這段代碼重新回到您的視圖中?礦井立即停止標題,整個第一個tableview單元格可見。我記錄了p.y和高度值。高度依然爲134,py的範圍從0到最大contentOffset,但是當滾動回頂端時,它停在134. – Jacob 2012-03-20 22:38:24

+0

此外,當我向下滾動並且標題視圖部分偏離屏幕時,我無法滾動回到如果這有幫助的話。 – Jacob 2012-03-20 22:44:53

回答

4

爲表啓用bouncesalwaysBounceVertical允許它在內容的邊緣滾動,並改寫,而這是發生偏移。

1

雅各布的解決方案運作良好。一個問題是滾動後內容偏離了一個像素。我有一個帶有黑色邊框的標題,在滾動後可以看到問題,然後返回到頂部。通過將p.y> 0更改爲p.y> = 0,當滾動回零時,我的標題被正確恢復。

/* to fix floating headers */ 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = (float) DASHBOARD_SUMMARY_PANEL_HEADER_HEIGHT; 

    if (p.y <= height && p.y >= 0) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
}