UITableView - 无法选择单元格,单元格重叠

时间:2014-10-22 21:47:29

标签: ios xcode uitableview didselectrowatindexpath

非常简单的表格视图:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;
}

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 44;
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SettingsCell"];
    UILabel *label = (UILabel *)[cell viewWithTag:1];

    switch (indexPath.row) {
        case 0:
        {
            label.text = @"One";
            break;
        }
        case 1:
        {
            label.text = @"Two";
            break;
        }
        default:
            break;
    }

    return cell;
}

当我点击一个单元格时,不会调用didSelectRowAtIndexPath。

细胞重叠:

enter image description here

这可能会发生什么?我可以滚动表格,但我无法选择单元格。有一点,这是有效的,我无法弄清楚究竟发生了什么事。

我正在使用Prototype单元格,并且选择设置为" Single Selection"在故事板中。所有视图都有userInteractionEnabled = YES。

2 个答案:

答案 0 :(得分:0)

你似乎在这里反复提到第一个单元格:

UILabel *label = (UILabel *)[cell viewWithTag:1];

可以解释被覆盖的文字。

尝试类似:

if(indexPath.row == 1)
{
    cell.textLabel.text = @"One";
}

答案 1 :(得分:0)

这是解决方案:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 44;
}

从" float"更改了返回类型到" CGFloat"。 Xcode 6.1甚至没有将此标记为警告。