как сделать uitableviewcell невыбираемым

#iphone #ios #uitableview

#iPhone #iOS #uitableview

Вопрос:

Я собираю строку поиска на основе 4 tableviewcells, каждая ячейка открывает вложенное представление и загружает кучу данных, которые пользователь выбирает для установки ячейки предыдущего представления.

Существует порядок, в котором эти ячейки должны быть установлены так, чтобы каждый предыдущий список данных во вложенном представлении был связан с набором данных в родительском представлении.

т.е. в первой ячейке вы выбираете тип автомобиля, в следующей ячейке вы просматриваете модели, связанные с выбранным типом автомобиля.

Помимо этого, основа моего вопроса заключается в том, как мне сделать ячейку невыбираемой, пока не будут установлены предыдущие ячейки.

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//...
if (indexPath.section == 0) 
    {

if (indexPath.row == 0) // <<--- what could I put in here.... 
        {
//...
}
  

}
}

Ответ №1:

Запретить ячейке отслеживать любое взаимодействие:

 [cell setUserInteractionEnabled:NO];
  

или разрешить взаимодействие, скрыв цвет выделения, а при нажатии ничего не делать.

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

- (void) tableViewDidSelectRow.... {
    if(indexPath.row == indexOfCellWithNoUserInteraction) {
        //do nothing
    }
}
  

Комментарии:

1. Есть ли способ изменить цвет ячейки до тех пор, пока ее невозможно отредактировать?

2. все хорошо.. Я понял это.. Я имел в виду, есть ли способ сказать, чтобы ячейка была светло-серой, пока она не выполнит условие, затем измените ее на белую, чтобы пользователь знал, что теперь он может выбрать эту ячейку.. но я понял это.. итак, теперь все хорошо: P

3. используйте второй вариант, если внутри вашей ячейки есть кнопки, которые вы хотите выбрать (вы не хотите, чтобы можно было выбирать всю ячейку — только некоторые кнопки внутри нее).

Ответ №2:

Используйте tableView:willSelectRowAtIndexPath: . Верните nil для строк, которые вы не хотите выделять.

Ответ №3:

Синтаксис Swift

 cell.selectionStyle = UITableViewCellSelectionStyle.None
  

Комментарии:

1. Это не делает его невыбираемым; просто UIKit не будет выделять подсветку при нажатии. didSelectRow... все равно будет вызываться.