viewforHeaderInSection

viewforHeaderInSection

我制作了一个 UITableView 并设置了“委托(delegate)”和“数据源”,每次我调用 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,但返回的部分数是正确的(当一个部分打开时,行数会更新)。
  • 它显示标题 View 的唯一方法是等待一段时间,直到它自动重新加载!或者我向上或向下滑动!
  • 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;
    }
    

    最佳答案

    您应该实现 heightForHeaderInSection: 并将标题的高度设置为 > 0 的值。

    关于objective-c - viewForHeaderInSection : not called when reloadData: is called,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23637966/

    10-09 16:30