Выбор тега NSSegmentedControl - PullRequest
       35

Выбор тега NSSegmentedControl

1 голос
/ 10 февраля 2012

Я пытаюсь реализовать кнопку NSSegmentedControl в моем IB.

Я подключен к - (IBAction)editCart:(id)sender;

Также он подключен к NSSegmentedControl *editCartButton;

Первый «сегмент» - это кнопка «-» для уменьшения значения корзины. Второй «сегмент» - это кнопка «+» для увеличения стоимости корзины.

Когда я пытаюсь использовать значение «sender» следующим образом: [sender selectedSegment], я получаю сообщение об ошибке: -[NSTableView selectedSegment]: unrecognized selector sent to instance 0x100622aa0

Моя кнопка находится внутри NSTableView.

Я также пробовал: [[editCartButton cell] selectedTag]

Когда я запускаю его в моих условиях, он всегда возвращает значение (ноль). Я хотел бы получить конкретные теги 0 и 1, которые я ожидаю получить, но не могу найти правильные действия.

Помощь высоко ценится, спасибо.

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Это:

-[NSTableView selectedSegment]: unrecognized selector
                                sent to instance 0x100622aa0

в основном говорит вам, что sender - это не NSSegmentedControl, как вы думаете. sender - это NSTableView. Так что вы либо неправильно подключили устройство, либо у вас возникла серьезная проблема с управлением памятью, когда NSSegmentedControl освобождается, а NSTableView в данный момент находится в ее месте памяти.

В -(IBAction)editCart:(id)sender вы можете добавить строку:

NSLog(@"editCart, sender = %@",sender);

, чтобы подтвердить это. Вы можете добавить NSLog строк, подобных этой, в других местах вашего кода, чтобы проверить свои идеи о том, что должно происходить.

0 голосов
/ 20 июля 2016

У меня была похожая проблема при работе над обновлением Seashore (порт GIMP для собственных API OS X).

Сначала вы должны получить объект ячейки NSSegmentedControl:

NSSegmentedControl *segControl = ...
NSSegmentedCell *segCell = [segControl cell];

Затем вы устанавливаете тег для сегмента, который хотите изменить:

[segCell setTag:200 forSegment:2];

Более подробная информация доступна в Документация Apple .

0 голосов
/ 10 февраля 2012

в IBAction попробуйте заменить (id) на (UISegmentedControl *)

...