Objective c 调用reloadData:时不调用viewForHeaderInSection:视图
我创建了一个Objective c 调用reloadData:时不调用viewForHeaderInSection:视图,objective-c,ios7,uitableview,Objective C,Ios7,Uitableview,我创建了一个UITableView并设置了“委托”和“数据源”,每次调用reloadData,它都会进入以下方法: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [self.headersList count]; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sect
UITableView
并设置了“委托”和“数据源”,每次调用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;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return SECTION_HEADER_HEIGHT;
}
方法是:
- (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;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return SECTION_HEADER_HEIGHT;
}
然后停下来!它不会进入viewforheaderin部分:
方法。我还实施了以下方法:
- (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;
}
-(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;
}
您应该实现
heightForHeaderInSection:
并将收割台的高度设置为>0的值 同样的问题也发生在我身上,这是因为tableview没有为页眉找到高度,但由于我使用自动高度计算从xCode 9,我无法给出任何明确的高度值。经过一些实验,我得到了解决方案,我们必须覆盖这个方法,如下所示:
-(CGFloat)tableView:(UITableView *)tableView
estimatedHeightForHeaderInSection:(NSInteger)section
{
return 44.0f;
}
虽然我已选中了两个选项
请注意:此错误仅在IOS-10版本上显示,而不是在IOS-11版本上显示。可能是xCode的一个bug。谢谢我假设您将类设置为
数据源
和UITableView
的委托
,对吗?您也可以使用重载部分方法尝试不同的方法。显示您的表视图页眉和页脚视图数据源回调,以查看是否存在问题。耶,数据源和委托没有问题。此行为仅在所有节都关闭时发生。@J2theC您的意思是ViewForHeaderSection:method吗?@dasblinkenlight-yah不起作用