#objective-c #ios
#objective-c #iOS
Вопрос:
Я хочу иметь a UITableViewCell
, который нельзя выбрать, пока его вспомогательный вид (a UISwitch
в моем случае) доступен для редактирования.
Проблема в том, что у меня есть две другие ячейки, из которых одна должна оставаться активной; это очень похоже на следующее изображение селектора времени / даты из приложения календаря iOS:
http://www.theiphoneblog.com/images/stories/2009/01/photo.jpg
Я не могу опубликовать изображение из-за того, что я новый пользователь.
Обратите внимание, что в этом представлении ячейка «Весь день» не может быть выбрана, но ее UISwitch
можно изменить, в то время как одна из ячеек «Starts» и «Ends» должна оставаться выбранной.
Я пробовал оба:
[cell setUserInteractionEnabled:NO];
[cell.contentView setUserInteractionEnabled:NO];
Первый работает, но не позволяет изменять переключатель, тогда как второй не работает, он позволяет отменить выбор одной из верхних ячеек, чего я не хочу.
Ответ №1:
Реализовать в методе делегирования
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([selectablePaths contains:indexPath])
{
// cell selected
selectedPath = indexPath;
}else
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
[tableView selectRowAtIndexPath:selectedPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}
}
И включить взаимодействие с пользователем для всех ячеек.
Комментарии:
1. Это действительно останавливает выделение ячейки, но не решает проблему сохранения ранее выбранной ячейки выбранной. Возьмем, к примеру, представление даты / времени iOS, я могу нажать на ячейку «Весь день», но это не изменит выбранную ячейку (в приведенной выше ссылке это будет ячейка «Пуск». Надеюсь, это понятно.
2. Почему вы не хотите сохранять индекс выбранной ячейки и после
[tableView desele... ]
выбора ее снова?