21

我遇到了一个我无法解决的问题...我有一个分组表,其部分页眉和部分页脚在启动时会正确显示,这要归功于

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

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

但是,我不知道以后如何更新它们,我不知道如何更改这些文本,这很令人沮丧,因为在我看来,这比更改文本标签或其他任何事情都难......(有些“.text”属性...)

我搜索了所有文档,但没有运气...

任何帮助都非常感谢!问候, 恩里科

4

4 回答 4

25

在委托方法中,添加一个返回节名的方法调用,例如:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    switch (section) {
        case firstSectionTag:
            return [self firstSectionTitle];
        case secondSectionTag:
            return [self secondSectionTitle];
        // ...
        default:
            return nil;
    }
}

- (NSString *)firstSectionTitle {
    // generate first section title programmatically, e.g. "return [[NSDate date] description];" 
}

// ...

然后,当您需要更新部分标题时,发送一个NSNotification触发类似以下方法的内容:

- (void)refreshTableSectionTitles:(NSNotification *)notification {
    [tableView reloadData];
}

如果表很大并且您想要更好的控制,请传递一个包含要重新加载的部分的 an,读取字典NSNotification以获取该部分,然后使用表视图重新加载该特定部分。NSDictionary-refreshTableSectionTitlesNSInteger-reloadSections:withRowAnimation:

于 2009-10-10T10:30:47.393 回答
7

您可以使用:

-(void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

而在

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

在语句中定义新的标题文本。

这将在更改页眉/页脚时制作漂亮的动画。

于 2011-09-01T12:10:09.913 回答
4

在您要更改标题的代码中使用此行:

    [[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
于 2012-06-27T14:57:12.430 回答
-4

在您的 TableViewController 中使用

[self.tableView reloadSectionIndexTitles];
于 2013-09-29T11:14:32.670 回答