Как я могу узнать, какие включены, если у меня есть несколько UIS-переключателей? - PullRequest
2 голосов
/ 05 января 2009

Надеюсь, что все в порядке.

У меня есть 22 UISwitch в табличном представлении, и я создал все эти объекты переключателей в одной функции и установил их в табличном представлении.

Как узнать, какой переключатель включен или выключен? Я хочу сделать это только одним методом действия, но я не знаю, как это сделать.

Если кто-нибудь сталкивался с этой проблемой, пожалуйста, дайте мне идеи ...

Спасибо, Haresh.

Ответы [ 3 ]

1 голос
/ 05 января 2009

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

Все это, конечно, подразумевает пользовательский класс UITableViewCell, так что вы можете сохранить тег и ссылку делегата обратно на ваш UITableViewController (обратите внимание, НЕ сохраняйте эту ссылку обратно на ваш контроллер табличного представления)

EDIT Этот ответ обеспечивает другой подход, который вы можете предпочесть:

Получение строки NSButtonCell

0 голосов
/ 12 января 2009

галочка на дополнительном представлении ?????? нашел один пример «Аксессуар», но они установили одну кнопку и установили изображение кнопки галочки и кнопки снятия метки ...

0 голосов
/ 05 января 2009

tableView: didSelectRowAtIndexPath: срабатывает только для выбора самой строки в представлении таблицы, что не похоже на то, что вы пытаетесь сделать.

В методе, в котором вы создаете свои экземпляры UISlider, вы можете хранить эти экземпляры в качестве ключей в NSMutableDictionary (используя setObject: forKey) с NSNumbers в качестве значений для использования в более поздней инструкции switch. Для каждого UISlider убедитесь, что изменение их значения записывается, установив в качестве целевого объекта метод в контроллере, используя нечто похожее на следующее:

[slider addTarget:self action:@selector(sliderValueDidChange:forEvent:) forControlEvents:UIControlEventAllTouchEvents];

и настройте метод в вашем контроллере так:

- (void)sliderValueDidChange:(id)sender forEvent:(UIEvent *)event;

, в котором вы можете использовать отправителя, NSDictionary экземпляров UISlider и оператор switch в intValue NSNumber, чтобы определить, какое значение ползунка изменилось и каково новое значение.

Могу ли я также предложить использовать галочку в качестве дополнительного аксессуара вместо переключателя вкл / выкл? Затем вы можете использовать tableView: didSelectRowAtIndexPath: для отслеживания выбора пользователем строки и отображения галочки в дополнительном представлении, если элемент стал выбранным. Это может более соответствовать Руководству Apple по человеческому интерфейсу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...