У меня есть UITableView
с пользовательским подклассом UITableCellView
. Я хочу показать одну из строк как активную или выбранную. Элементы управления в моей ячейке имеют свои собственные жесты, но у меня есть область справа, где я могу сделать выбор. Я (наивно) думал, что могу просто указать, что мне нужен аксессуар стиля галочки, но документы Apple говорятКак сделать (пользовательский) выбор с пользовательским подклассом UITableViewCell
Этот элемент управления не отслеживает касания. Делегат таблицы вида может управлять отметками в секции строк (возможно, ограничивая отметку одной строке раздела) в своем методе tableView: didSelectRowAtIndexPath:.
Я не уверен, как это интерпретировать, но я положил метод tableView:didSelectRowAtIndexPath:
в свой делегат, и он никогда не срабатывает. Независимо от того, где я касаюсь моей камеры (со стороны, где есть сенсорные элементы управления или нет). Так что мне любопытно, почему это не работает? Я также заметил, что независимо от того, как я установил свойство selected
на ячейки, эта галочка всегда отображается, поэтому я не думаю, что это действительно предназначено для использования индикатора выбора.
Но я на самом деле в порядке с этим. Я действительно не хочу галочку, я предпочел бы сделать что-то вроде почты, когда он будет выбирать несколько с левой стороны, круги стиля с кнопками-переключателями. Что затем приводит меня к затруднительному по поводу того, как действовать. Должен ли я просто добавить элемент управления кнопки в правую сторону, правильно обработать изображения в моем пользовательском подклассе ячейки? В этом случае я использую фоновое изображение кнопки? Или просто изображение? И поскольку для выбора нужно отменить выбор других, как лучше всего это подключить к делегату табличного представления, а не к подклассу? Или я должен создать собственный подкласс NSView?
UPDATE
Я снял аксессуар. Я добавил UIImageView для отображения состояния выбора. Поскольку субконтроллер в моей ячейке использует жест hold, отборное нажатие пропускает его почти всюду для ячейки. Синхронизировать визуальное состояние выбора, используя следующий метод:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
self.selectionView.image = self.selected ? [UIImage imageNamed: @"selected"] : [UIImage imageNamed: @"not_selected"];
}
На мой пользовательский контроллер, я добавил следующий метод:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[Site setCurrent: self.allSites[indexPath.row]];
[[Site current] pullValves];
}
Это, наконец, надел на меня, что, что первый метод был для обновления визуальное состояние, но не для ответа на намерение пользователей, которое принадлежит второму методу. Первые пожары в разное время, но второй применяется, когда пользователь на самом деле делает кран.
Наконец, я должен был программно установить
self.clearsSelectionOnViewWillAppear= NO;
Не имеет значения, что я поставил в раскадровке, что значение было YES
, поэтому возвращение к списку очищал мой выбор.
Я не уверен, как вы отвечаете на мой вопрос. Я думаю, вы думаете, что я делаю это плохая идея (tm). Который я довольно новичок в этом, признаю, вполне может быть. Но я должен понять, почему ... –