更改UITableView的部分页眉/页脚标题,而无需重新加载整个表格视图

有没有办法重新加载表视图的部分页眉/页脚,而无需调用[tableView reloadData];

实际上,我想在表格视图的部分页脚中显示单元格的数量。 表视图是可编辑的,我使用删除或插入行

 – insertRowsAtIndexPaths:withRowAnimation: – deleteRowsAtIndexPaths:withRowAnimation: 

看来这些方法不会更新节页脚。 奇怪的是,当我调用这些方法的表视图的数据源方法

 - (NSString *)tableView:(UITableView *)table titleForFooterInSection:(NSInteger)section 

被称为(两次!),但它不会更新与新值的表视图!

任何人有任何想法如何解决这个问题?

如果您只有基本的文本标题或页脚,则可以直接访问它们:

 [tableView footerViewForSection:indexPath.section].textLabel.text = [self tableView:tableView titleForFooterInSection:indexPath.section]; 

同样的标题:

 [tableView headerViewForSection:indexPath.section].textLabel.text = [self tableView:tableView titleForHeaderInSection:indexPath.section]; 

我设法做一个间接的方式:我创build了一个UILabel并将其设置为部分页眉/页脚。

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { // update sectionFooterView.text return sectionFooterView; } - (void)viewDidLoad { // create sectionFooterView in Interface Builder, change the frame here // use Font-size:15 , BG-Color: clearColor , text-Color: RGB=(97,105,118) // and Text-alignment:Center to look like table view's original footer sectionFooterView.frame = CGRectMake(0, 10, 320, 12); } 

有没有人知道一个方法来做到这一点,而不设置自定义页脚视图?

这应该工作:

  UIView.setAnimationsEnabled(false) tableView.beginUpdates() if let containerView = tableView.footerViewForSection(0) { containerView.textLabel!.text = "New footer text!" containerView.sizeToFit() } tableView.endUpdates() UIView.setAnimationsEnabled(true) 

这是另一种方法:

 UITableViewHeaderFooterView *headerView=[self.tableView headerViewForSection:1]; CATransition *animation = [CATransition animation]; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; animation.type = kCATransitionFade; animation.duration = 0.35; [headerView.textLabel.layer addAnimation:animation forKey:@"kCATransitionFade"]; headerView.textLabel.text=[self tableView:self.tableView titleForHeaderInSection:1]; [headerView.textLabel sizeToFit]; 

检查UITableView的文档,或更具体地说-reloadSections:withRowAnimation:

这是你如何在Swift 3.0中完成的

 tableView.beginUpdates() tableView.headerView(forSection: indexPath.section)?.textLabel?.text = "Some text" tableView.endUpdates()