0

我在我的 TableView 中设置了我所有的标题部分。

稍后,我需要在任何部分的表格视图中获取标题的值,

我怎样才能直接向 UITableView 询问这些值?

没有委托协议:

    [self tableView:tableView titleForHeaderInSection:i]

因为这个方法覆盖了我自己类的一个协议。

- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
 {
     /* If datasource methdod is implemented, get´s the name of sections*/
     SEL nameForSection = @selector(nameForSection:);
    if ( (self.dataSource) && [self.dataSource respondsToSelector:nameForSection] )
    {
       NSString *titleSection = [self.dataSource nameForSection:section];
       return titleSection;
   }

return nil;

}

感谢提前...

4

6 回答 6

7

从iOS6.0及更高版本开始支持

如果你有 indexPath,你可以像这样得到它:

UITableViewHeaderFooterView* header =[self.tableView headerViewForSection:indexPath.section];
NSLog(@"Header text = %@", header.textLabel.text);

改成这样

header.textLabel.text= @"changed";
于 2012-11-15T08:56:23.670 回答
5

您可以使用 UITableView 的 dataSource 来获取部分标题:

[tableView.dataSource tableView:tableView titleForHeaderInSection:section];

如果您使用默认数据源(即 UITableViewController),它将返回在 InterfaceBuilder 中设置的部分标题。

这是我的代码,它复制了一个模板视图并适当地设置了标题。请注意,我只是将表格的标题视图用作存储模板并将其从 UITableViewController 子类的 viewDidLoad 中删除的方便位置。

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView* header = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self.sectionHeaderTemplateView]];
    UILabel* label = ((UILabel*)header.subviews[0]);
    label.text = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
    return header;
} 
于 2014-05-23T12:47:56.753 回答
2

将节标题存储在 NSArray 中,并使用此数组获取表视图中任何节的值。

于 2012-07-11T09:28:45.550 回答
2

你是如何设置部分的标题的?如果你从 UITableViewDataSource 重写 tableView:titleForHeaderInSection: 方法,你可以自己调用它来获取特定部分的标题。如果您要覆盖 UITableViewDataSource 中的 tableView:viewForHeaderInSection: 方法,请考虑使用一个包含所有标签的数组,以便您可以获取特定部分的标签标题。

于 2012-07-11T09:31:54.837 回答
1

此表视图方法将返回标题视图,我认为在您的情况下应该是UILabel

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
于 2012-07-11T09:33:07.617 回答
0
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
 {
     /* If datasource methdod is implemented, get´s the name of sections*/
     SEL nameForSection = @selector(nameForSection:);
    if ( (self.dataSource) && [self.dataSource respondsToSelector:nameForSection] )
    {
       NSString *titleSection = [self.dataSource nameForSection:section];
       return titleSection;
   }

return nil;

嗯...您的 DataSource 有一个 DataSource 吗?UITableView 的 dataSource 的目标是由另一个类实现,所以 self.datasource 不是 UITableView 的数据源!

于 2012-07-11T10:12:18.997 回答