установить подсветку UISegmentedControl - PullRequest
0 голосов
/ 01 марта 2011

Я хотел бы установить выделенный сегмент без вызова назначенной функции.

я звоню

segmentedControlLeft.selectedSegmentIndex = 1;

, который хорошо работает для segmentedControl, но также генерирует UIControlEventValueChanged, который вызывает мою присоединенную функцию, и я бы хотел избежать повторного вызова.

это возможно?

спасибо!

Ответы [ 3 ]

2 голосов
/ 01 марта 2011

См. Мой вопрос

Это известная проблема.Идентификатор # 8372405

Вы должны использовать BOOL, который вы установили перед использованием setSelectedSegmentIndex: и сбросить после того, как вы установили выбранный индекс.Проверьте на бул в вашем действии.

Это то, что я сделал.

1 голос
/ 02 марта 2011

Я сделал это сейчас, и это работает

[segmentedControlLeft removeTarget:self action:@selector(segmentActionZoom:) forControlEvents:UIControlEventValueChanged];
segmentedControlLeft.selectedSegmentIndex = value;
[segmentedControlLeft addTarget:self action:@selector(segmentActionZoom:) forControlEvents:UIControlEventValueChanged];
1 голос
/ 01 марта 2011

Удалить цель, изменить выбранный сегмент и снова добавить цель. Или вы используете какую-то переменную, чтобы указать, что вы изменили ее с помощью кода, и если этот флаг установлен, игнорируйте этот вызов в вашей функции и сбросьте свой флаг.

...