我在TableView中设置了所有标题的部分。
稍后,我需要在任何部分的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;
}
谢谢提前......
答案 0 :(得分:7)
从iOS6.0及更高版本开始支持
如果你有indexPath:
,你可以这样做UITableViewHeaderFooterView* header =[self.tableView headerViewForSection:indexPath.section];
NSLog(@"Header text = %@", header.textLabel.text);
像这样改变
header.textLabel.text= @"changed";
答案 1 :(得分:4)
您可以使用UITableView的dataSource来获取章节标题:
[tableView.dataSource tableView:tableView titleForHeaderInSection:section];
如果您正在使用默认的dataSource(即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;
}
答案 2 :(得分:2)
将sections标题存储在NSArray中,并使用此数组获取表视图中任何部分的值。
答案 3 :(得分:2)
你是如何设置部分的标题的? 如果要覆盖UITableViewDataSource中的tableView:titleForHeaderInSection:方法,则可以自己调用它来获取特定部分的标题。 如果要覆盖UITableViewDataSource中的tableView:viewForHeaderInSection:方法,请考虑使用包含所有标签的数组,以便获得特定部分的标签标题。
答案 4 :(得分:1)
此表视图方法将返回标题的视图,我认为在您的情况下它应该是UILabel
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
答案 5 :(得分: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的数据源!