更改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()