2016-07-07 65 views
0

我設置爲UITableView的部分頭,一切完美的作品:怎樣的tableView:viewForHeaderInSection:工作完全以及如何定製這個視圖動態

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
{ 
    let headerView = MyCustomHeaderView() 
    headerView.backgroundColor = UIColor.blueColor() 
    return headerView 
} 

每節的標題是藍色的,正如我預期的那樣。現在

,我想改變這種顏色,當我UITableView被滾動,所以我在一個UITableView擴展實現此方法:

extension UITableView 
{ 
    func setHeadersColor(color: UIColor) 
    { 
     guard let delegate = self.delegate 
      else {return} 
     guard delegate.respondsToSelector(#selector(UITableViewDelegate.tableView(_:viewForHeaderInSection:))) 
      else {return} 

     for i in 0...self.numberOfSections 
     { 
      if let header = delegate.tableView!(self, viewForHeaderInSection: i) as? MyCustomHeaderView 
      { 
       header.backgroundColor = color 
      } 
     } 
    } 
} 

當我把這種方法,header.backgroundColor = color被調用,但背景顏色標題不會更改。

所以我的問題是:

  • UIViewtableView:viewForHeaderInSection:一樣在標題中顯示的實際UIView返回的實例?它是一個副本嗎?還有別的嗎?

  • 我該如何動態改變這個標題視圖?我是否需要撥打reloadData才能更改標題的背景顏色?這將是對資源的浪費..

+0

你可以得到的在表'tableView.headerViewForSection(X)' – dan

+0

我試着以及看法,但我得到了相同的結果 – Randy

回答

0

我覺得你的問題與不能重複使用的觀點,所以你的觀點不斷在這裏

let headerView = MyCustomHeaderView() 

創建並返回,總是與藍色背景顏色

我希望這有助於你

+0

感謝Reinier,但不幸的是對於標題視圖沒有可重用機制(http://stackoverflow.com/a/960157/3844377) – Randy

+0

是的,但如何才能做到這一點?,如果我找到了一些體面的方式,我會發布我的結果 –

+0

好吧,謝謝,現在我正在使用'reloadData',它不影響我的應用程序的性能,但我只是不喜歡做不必要的事情:) – Randy

相關問題