2011-10-22 63 views
0

我發現,那個UITableView修改了contentSize屬性,我不能自己設置它。如何隱藏表頭,並在插入/刪除後保持隱藏狀態

Stack Trace

這是我的調用堆棧。在此調用contentSize被修改後。我不想要它,因爲我想隱藏標題,所以我需要將視圖向下滾動一下,並使其設置爲contentSize稍高於可見度以便能夠向下滾動一點。

任何想法如何隱藏表頭,並保持隱藏後插入/刪除?通過隱藏,我的意思是表頭最初「隱藏」,但是當你滾動到頂部時顯示。我使用NSFetchedResultsController來獲取CoreData數據。

回答

0

看起來contentSize僅在調用controllerDidChangeContent後由iOS專用代碼修改。

僅供記錄。這是我的解決方案(searchView是我想隱藏的視圖):

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentSize.height <= scrollView.frame.size.height) 
    { 
     [scrollView setContentOffset:CGPointMake(0, self.searchView.frame.size.height)];   
     [scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, tableView.frame.size.height + self.searchView.frame.size.height)]; 
    } 
} 
0

可以實現對頭部的大小的tableview委託方法並返回0,將是這樣的:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return 0; 
} 

這將設置頁眉每一部分爲零。您還可以使用相同的方式編輯頁腳大小heightForFooterInSection:

+0

我知道如何自己隱藏/顯示標題。想法是默認保持它「隱藏」,我的意思是阻止默認滾動到頂部,因爲頂部有標題視圖,只有當用戶有意滾動到頂部時才應該可見。我知道如何滾動來隱藏它,但是它在插入/刪除操作之後顯示,因爲表本身會改變contentSize值。 – Marcin