2014-05-13 3 views
3

가 나는 UITableView하고 "위임"과 "데이터 소스"내가 reloadData를 호출 할 때마다 설정을했다라고는 방법으로 진행된다viewForHeaderInSection : 때 reloadData 호출되지는 :

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [self.headersList count]; 
} 

및 방법 :

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    SectionInfo *headerInfo = (self.headerInfoArray)[section]; 
NSInteger numOfObjectsInSection = [[headerInfo.list objectsInList] count]; 
    return headerInfo.open ? numOfObjectsInSection : 0; 
} 

그리고 나서 멈추십시오! 그것은 ViewForHeaderInSection: 방법으로 들어 가지 않습니다. 나는 열기/닫기 섹션 기능을 사용하는 것이 알고

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return SECTION_HEADER_HEIGHT; 
} 
  • : 나는 또한 방법을 구현! 따라서 처음에는 모든 섹션이 닫히고 각 섹션의 행 수가 0이지만 반환되는 섹션의 수는 정확합니다 (섹션이 열리면 행 수가 업데이트됩니다).
  • 헤더보기를 표시하는 유일한 방법은 자동으로 다시로드 될 때까지 잠시 기다리는 것입니다. 아니면 위아래로 스 와이프 해!

viewForHeaderInSection 방법 :

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UISectionHeaderView *sectionHeaderView = [[UISectionHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, SECTION_HEADER_HEIGHT)]; 

    SectionInfo *sectionInfo = (self.headerInfoArray)[section]; 
    sectionHeaderView.open = sectionInfo.open; 
    sectionInfo.headerView = sectionHeaderView; 

    sectionHeaderView.titleLabel.text = [NSString stringWithFormat:@"%@ (%lu)",sectionInfo.list.title, (unsigned long)[sectionInfo.list.objectsInList count]]; 
    sectionHeaderView.section = section; 
    sectionHeaderView.delegate = self; 

    return sectionHeaderView; 
} 
+0

당신의 클래스를'dataSource'와'UITableView'의'delegate' 둘 다로 설정했다고 가정하겠습니다, 맞습니까? – dasblinkenlight

+0

reload 섹션 메소드를 사용하여 다른 접근 방법을 시도 할 수도 있습니다. 테이블 뷰 헤더 및 푸터 뷰 데이터 소스 콜백을 표시하여 문제가 있는지 확인하십시오. – J2theC

+0

yah, 데이터 소스 및 위임에 아무 문제가 없습니다. 이 동작은 모든 섹션이 닫힌 경우에만 발생합니다. – a7md

답변

11

당신은 heightForHeaderInSection:를 구현하고 있는 tableview가 'didn를하기 때문에> 0

+0

감사합니다. 이것은 나를 돕는다 ... –

0

같은 문제가 그건 나와 함께 발생 값으로 헤더의 높이를 설정해야합니다 찾지 마시길. 높이가이고 머리글은 자동 높이 계산xCode 9, 명시적인 높이 값을 지정할 수 없습니다. 내가 두 옵션 모두

  1. 자동 높이 계산
  2. 자동 예상 높이를 확인했지만 일부 실험 후 나는 솔루션, 우리는

    -(CGFloat)tableView:(UITableView *)tableView 
         estimatedHeightForHeaderInSection:(NSInteger)section 
    { 
         return 44.0f; 
    } 
    

    등이 메소드를 오버라이드 (override) 할 필요가있어 계산

이야기 게시판 Apple이 말하길,하지만 여전히 이상한 오류가 있습니다.

을 참고 :이 오류 만 IOS-10 버전에 나타났다하지 IOS-11 버전. 어쩌면 xCode의 버그 일 수도 있습니다. 감사합니다