8

我有一个UITableViewwhich has many sections,每个部分只有 1 行。

我想要做的是,当我单击特定单元格时,应该更改与单元格对应的标题标题。

我已经使用-tableView:viewForHeaderInSection:

如何在-tableView:didSelectRowAtIndexPath:方法中获取行标题标题?

4

6 回答 6

7

您可以获得所选索引的标题视图,例如:

UIView *headerView=[deviceTable headerViewForSection:indexPath.section];

然后通过循环从headerView中获取孩子。like

for(UIView *view in headerView.subviews)
{
     if ([v isKindOfClass:[UILabel class]])
        {
            UILabel *label=(UILabel *)v;
            NSString *text=label.text;
        }
}

编辑: 正如 Desdenova 建议的那样:

    UITableViewHeaderFooterView *headerView=[deviceTable headerViewForSection:indexPath.section];
    NSString *title=headerView.textLabel.text;
于 2013-04-15T11:52:53.833 回答
4

我建议同时实现tableView:titleForHeaderInSection:and tableView:viewForHeaderInSection:(如果两者都实现,那么 iOS 更喜欢viewForHeaderInSection:)。然后让您的实现tableView:viewForHeaderInSection:使用标签创建其视图并使用以下结果填充它tableView:titleForHeaderInSection:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
     UIView *yourHeaderView;
     UILabel *someLabel;

     // set up the view + label

     // if self doesn't implement UITableViewDelegate, you can use tableView.delegate
     someLabel.text = [self tableView:tableView titleForHeaderInSection:section];

     return yourHeaderView;
}

现在当你响应一行点击时,很容易得到相应的标题:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     NSString *titleForHeader = [self tableView:tableView titleForHeaderInSection:indexPath.section];
}
于 2013-04-15T12:43:20.980 回答
4

快速解决方案:

let sectionHeaderView = table.headerViewForSection(indexPath.section)
let sectionTitle = sectionHeaderView?.textLabel?.text
于 2015-08-01T11:48:32.677 回答
0

只需将数据源用于节标题。所以无论NSArray你有什么保存字符串值

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

只需在 didSelectRowAtIndexPath 中使用它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSString *titleForHeader = [myHeaderTitleArray objectAtIndex:indexPath.section];
}
于 2013-04-15T11:49:35.913 回答
0

斯威夫特 4

let indexPath = IndexPath.init(row: 0, section: 0) // put here your row or section number..
let myHeaderView = tableView.headerView(forSection:indexPath.section)
let title = myHeaderView?.textLabel?.text
于 2017-10-10T17:38:26.373 回答
-1

您可以使用以下方法获取部分索引:

indexpath.section

使用章节索引,您可以简单地复制您所拥有的内容-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section以获得章节标题。

于 2013-04-15T11:48:25.133 回答