Change UITableView section header/footer WHILE RUNNING the app?

a 夏天 提交于 2019-11-28 21:13:28

问题


I'm facing a problem I cannot resolve... I have a grouped table whose section header and section footer get displayed correctly upon launch thanks to

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

and

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

Yet, I can't figure out how to update them later, I don't know how to change those texts and it's quite frustrating because in my mind it had to be nothing harder than changing a text label or whatever... (some ".text" property...)

I searched all through the documentation with no luck...

Any help is highly & kindly appreciated! Regards, Enrico


回答1:


In the delegate method, add a method call that returns the section name, e.g.:

- (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];" 
}

// ...

Then, when you need to update the section title, send an NSNotification that triggers something like the following method:

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

If the table is large and you want finer control, pass an NSNotification with an NSDictionary that contains the section you want to reload, read the dictionary in -refreshTableSectionTitles to get back the section NSInteger, and use the table view's -reloadSections:withRowAnimation: to reload that specific section.




回答2:


You can use:

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

And in

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

define your new header text in statement.

This will make a nice animation while changing the header/footer.




回答3:


Use this line in your code where you want to change the title:

    [[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];



回答4:


In Your TableViewController use

[self.tableView reloadSectionIndexTitles];


来源:https://stackoverflow.com/questions/1547497/change-uitableview-section-header-footer-while-running-the-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!