#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...
все равно будет вызываться.