又是 UITableView 老生長談了。。但是今天遇到了一個之前沒遇到的問題
- 先搞好資料來源
- 弄好 cell 和 sectionheaderview
先思考個問題
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
複製程式碼
在有組頭檢視且每組都有cell
的情況下,這兩個方法呼叫順序是如何的
事實是,先呼叫 cell
的,再呼叫 sectionheader
的如此,然後瞬間懵逼,因為有個需要對齊的地方,如果說 章節裡面有 第*章
之類的東西的話,需要對齊後面的內容。然後解決方案是 弄一個 Dict 儲存 {section:@(startX)}
,這樣的話你會發現,第一個分組的顯示有問題但是之後的分組操作的時候正常,這是因為 開始 預設展開第一個分組,然後再展開其他分組的時候 section對應的 startX 已經有了一個正確的值,所以是正確的。為此,可專門在 tableView reloadData
之前,呼叫一次 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
section 為0,先混存一波 section = 0 時的 startX 的值。
如此,便是正常的介面了。