UITableView - не удается выбрать ячейки, ячейки перекрываются

Действительно тривиальный вид таблицы:

- (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 не вызывается, когда я нажимаю на ячейку.

Также ячейки перекрываются:

введите здесь описание изображения

Что здесь может происходить? Я могу прокручивать таблицу, но не могу выбирать ячейки. В какой-то момент это работало, и я не могу понять, что пошло не так.

Я использую ячейку прототипа, а в раскадровке для выбора установлено значение «Одиночный выбор». Все представления имеют userInteractionEnabled = YES.


person soleil    schedule 22.10.2014    source источник


Ответы (2)


Кажется, вы неоднократно ссылаетесь на первую ячейку здесь:

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

что может объяснить перезапись текста.

Попробуйте что-то вроде:

if(indexPath.row == 1)
{
    cell.textLabel.text = @"One";
}
person H K    schedule 22.10.2014

Это решение:

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

Изменен тип возвращаемого значения с "float" на "CGFloat". Xcode 6.1 даже не помечает это как предупреждение.

person soleil    schedule 22.10.2014