单击自定义UITableView节标题是在节的第一行调用didSelectRow:

时间:2013-09-05 11:54:36

标签: ios objective-c uitableview

我在viewForHeaderInSection上有一个自定义UITableView - 让我们称之为HeaderCellUITableViewCell的一个简单子类)具有最奇怪的行为:

  • 点击部分标题

    • 它会使用该部分的第一个tableView:didSelectRowAtIndexPath: indexPath触发UITableViewCell。就像我点击单元格一样,但没有。我点击标题。

问题是,如果我用HeaderCell替换viewForHeaderInSection上的自定义UIView,那就不会再发生了!我已检查过与 xib 及其类关联的所有操作,找不到任何addTarget:或任何 xib 操作。

其他奇怪的因素:它不会发生在第一个HeaderCell(第0部分)上,只发生在> = 1部分。

注意:我有一个快速解决方案,但这对以后的支持有风险

HeaderCell课程上,我只需要实现:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    return;
}

这是最后的解决方案。有人在之前检测到此行为吗?

4 个答案:

答案 0 :(得分:5)

您不应该使用UITableViewCell的子类作为页眉/页脚。使用UITableViewHeaderFooterView(如果您可以使用> = iOS6)或仅使用UIView

答案 1 :(得分:1)

您可以通过setEnableUserInteraction方法完成此操作。请参考给出的代码,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *cellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
[cell setUserInteractionEnabled:YES];


if([indexPath row] == 0)
    [cell setUserInteractionEnabled:NO];



return cell;


}

希望这会对你有所帮助:)。

答案 2 :(得分:0)

如果您使用return cell.contentView作为页眉/页脚

,请使用return cell代替UITableViewCell

答案 3 :(得分:0)

这是一个旧线程,但是如果您使用UITableViewCell的子类作为标头,则只返回内容视图,而不是headerforView函数中的完整单元格。

>