在iOS實際開發(fā)中,很多時候都會遇到設置tableView的組頭。
除了直接設置 ?【tableView.tableHeaderView = [[UIView alloc] initWithFrame:<#(CGRect)#>];】 ?之外,最常用的就是使用tableView的代理方法 ?【- (UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section;】。
但是有一個問題,很多時候我們設置了tableView的grouped樣式,遵循了協(xié)議,設置了數(shù)據(jù)源和代理,上面這個返回組頭view的代理方法還是不走。
究其原因,是因為在使用返回組頭的代理方法時,必須要設置tableView的 sectionHeader 的高度。
//設置組頭的高度-如果需要自定義組頭視圖,一定要設置行高,否則不走代理方法!【tableView.sectionHeaderHeight = 22;】。
在Xcode8正式版之前我們可以通過以上代碼設置sectionHeaderHeight,沒有問題。但是最近使用Xcode8.1時明明按照以上方法設置組頭的高度,返回組頭的代理方法還是不走,百思不得其解。忽然靈機一動,使用代理返回組頭高度試試:?
【- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section 】
使用代理方法設置組頭高度之后,此問題解決了(使用設置 預估組頭行高 的代理方法也可)…… ?就是這么怪異……
此問題解決,也希望能幫到遇到同樣問題的你!
PS:這里多說一句,就是在返回組頭的代理方法中,如果使用系統(tǒng)默認的組頭的textLabel,我們在設置字體的時候會不正常,所以這里盡量自定義組頭view。 -end
——共同進步!