iphone - получение идентификатора кнопки в сегментированном элементе управления - PullRequest
1 голос
/ 24 марта 2010

Я пытаюсь создать что-то, что использует идею UIPopOverController, я имею в виду, что якорь речевого пузыря указывает на кнопку, вызвавшую метод.

Проблема в том, что я использую UISegmentedControl ...

Как получить идентификатор кнопки, которая была нажата на UISegmentedControl, чтобы я мог определить ее положение и сгенерировать привязку?

спасибо за любую помощь.

1 Ответ

3 голосов
/ 24 марта 2010

Посмотрите на SegmentViewController.{h,m} в примере проекта UICatalog.

Пример кода настраивает вид с использованием кода.

Эта строка

[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

- вот где происходит магия.

- (void)segmentAction:(id)sender
{
    //NSLog(@"segmentAction: selected segment = %d", [sender selectedSegmentIndex]);
}

Вы также можете сделать это в Интерфейсном Разработчике

Предполагая, что в вашем ViewController объявлено (IBAction)segmentAction:(id)sender, а владельцем файлов является ваш ViewController, щелкните правой кнопкой мыши UISegmentedControl и установите соединение между событием UIControlEventValueChanged и владельцем файла segmentAction

.

UISegmentedControl действует как «одиночная» кнопка. Это отдельный объект, помещенный в один кадр, в отличие от элементов панели инструментов, которые представляют собой массив объектов, размещенных в своих собственных кадрах. Типичный шаблон использования - отправка сообщения внутри оператора switch в вашем сегменте метода.

Я вижу два варианта.

Вариант A: реализовать пользовательское представление, содержащее массив элементов управления UIButton. Действие для события UITouchUpInside для всех кнопок может указывать на один и тот же метод в вашем контроллере. Затем внедрите отправителя buttonPressed: (id), который вы можете попросить отправителя указать его фрейм и местоположение, чтобы использовать его для создания нового представления сверху. -> Сложный

Вариант B: Вы можете рассчитать положение нового подпредставления, используя смещение, рассчитанное из selectedSegmentedIndex, widthForSegmentAtIndex: и contentOffsetForSegmentAtIndex:. На самом деле мало чем отличается от расчета по границам любого представления. -> Проще

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