Выбор тега NSSegmentedControl
Я пытаюсь реализовать кнопку NSSegmentedControl в моем IB.
У меня это связано с - (IBAction)editCart:(id)sender;
Кроме того, это связано с NSSegmentedControl *editCartButton;
Первый "сегмент"- это кнопка "-", чтобы уменьшить стоимость корзины. Второй "сегмент"- это кнопка "+" для увеличения стоимости корзины.
Когда я пытаюсь использовать значение "отправитель", например, так: [sender selectedSegment]
Я получаю ошибку:-[NSTableView selectedSegment]: unrecognized selector sent to instance 0x100622aa0
Моя кнопка находится внутри NSTableView.
Я также попробовал: [[editCartButton cell] selectedTag]
Когда я запускаю его в моих условиях, он всегда возвращает значение (null). Я хотел бы получить конкретные теги 0 и 1, которые я ожидаю получить, но не могу найти правильные действия.
Помощь высоко ценится, спасибо.
3 ответа
Это:
-[NSTableView selectedSegment]: unrecognized selector
sent to instance 0x100622aa0
в основном говорит вам, что sender
это не NSSegmentedControl
Вы думаете, что это так. sender
является NSTableView
, Таким образом, либо вы подключили все неправильно, либо у вас возникла серьезная проблема с управлением памятью, когда NSSegmentedControl
освобожден, и NSTableView
в настоящее время находится в его памяти.
В -(IBAction)editCart:(id)sender
Вы можете добавить строку:
NSLog(@"editCart, sender = %@",sender);
чтобы подтвердить это. Вы можете бросить NSLog
такие строки в других местах вашего кода, чтобы проверить ваши идеи о том, что должно происходить.
У меня была похожая проблема при работе над обновлением Seashore (порт GIMP для собственных API OS X).
Во-первых, вы должны получить NSSegmentedControl
клеточный объект:
NSSegmentedControl *segControl = ...
NSSegmentedCell *segCell = [segControl cell];
Затем вы устанавливаете тег для сегмента, который хотите изменить:
[segCell setTag:200 forSegment:2];
Более подробная информация доступна в документации Apple.
В IBAction попробуйте заменить (id) на (UISegmentedControl *)