2016-07-07 4 views
0

나는 UITableView의 섹션에 대한 헤더를 설정하고 있습니다를 정의하고 모든 것을 완벽하게 작동하는 방법 :어떻게있는 tableView : viewForHeaderInSection : 작동 정확히이 뷰 동적으로

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

모든 섹션의 헤더는 파란색, 내가 기대하는대로. 나는이 메서드를 호출 할 때

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가 호출되는하지만 배경 색상 :

지금, 나는 내 UITableView 그래서 스크롤되어 나는 UITableView 확장에서이 방법을 구현이 색상을 변경하려면 헤더가 변경되지 않습니다.

그래서 제 질문은 다음과 같습니다

  • tableView:viewForHeaderInSection: 헤더에 표시되는 실제 UIView 같은 의해 반환 UIView의 인스턴스입니다? 사본입니까? 다른 것입니까?

  • 이 헤더보기를 어떻게 동적으로 변경할 수 있습니까? 내 머리글의 배경색을 바꾸기 위해서 reloadData으로 전화해야합니까? 즉 자원의 낭비가 될 것이다 .. 나는 당신의 문제는 그렇게보기는 지속적으로 여기

    let headerView = MyCustomHeaderView() 
    

    만들어보기로 다시 사용하지 관련된 파란색 배경으로 항상 반환하고 있다고 생각

+0

당신 (x)는' – dan

+0

는 나뿐만 아니라 시도 tableView.headerViewForSection'와 테이블에의보기를 얻을 수 있습니다,하지만 난 같은 결과를 얻었다 – Randy

답변

0

색상

나는 이것이 당신에게 도움이되기를 바랍니다

+0

감사합니다 Reinier,하지만 불행히도 헤더 뷰에 대한 재사용 메커니즘이 없습니다 (http://stackoverflow.com/a/960157/3844377) – Randy

+0

예, 그렇다면 어떻게 할 수 있습니까?, 제가 괜찮은 방법을 찾으면 결과를 게시 할 것입니다. –

+0

좋아요, 지금은'reloadData'를 사용하고 있습니다. 내 앱의 성능에는 영향을 미치지 않지만 불필요한 것들을 정말로하고 싶지는 않습니다. :) – Randy

관련 문제