2012-02-09 3 views
1

Я пытаюсь внедрить кнопку NSSegmentedControl в моем IB.Выбор тега NSSegmentedControl

Я это связано с - (IBAction)editCart:(id)sender;

Кроме того, он подключен к NSSegmentedControl *editCartButton;

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

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

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

Я также попытался: [[editCartButton cell] selectedTag]

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

Помогите оценить, спасибо.

ответ

-1

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

+0

Выполнение этой задачи вызывает ошибку 'Ожидаемый тип' – Rail24

+0

Это будет работать, только если проект был на iOS. Поскольку упоминается «NSSegmentedControl», я предполагаю, что целевая ОС - OS X. – MaddTheSane

1

это:

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

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

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

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

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

+0

Я сделал это и подтвердил, что 'sender' действительно' NSTableview'. Я переустановил все и получил ту же ошибку. Любые другие идеи? – Rail24

+0

Хм, может быть, я не понимая, как это работает должным образом, я должен делать: - Подключение NSSegmentedCell к чему-то вроде 'IBOutlet NSSegmentedControl * editCartButton;' или - Подключение NSSegmentedCell к функции как '- (IBAction) editCart: (id) sender; ' – Rail24

+0

Вы должны связать * действие * NSSegmentedCell с выходом' IBAction' вашего контроллера вида. В IB существует два типа ссылок: A) те, которые ссылаются только на объекты (отмеченные 'IBOutlet' в вашем коде) и B) те, которые ссылаются на цель (которая является объектом) и селектор (помечены' IBAction' в вашем коде , имя метода - это селектор, содержащий объект - объект). (Тем не менее, у вас также может быть проблема с памятью, которая испортит ваши ссылки. Мы не можем видеть это из того, что вы опубликовали.) – mvds

-1

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

Во-первых, вы должны получить NSSegmentedControl «s объект клеток:

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

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

[segCell setTag:200 forSegment:2]; 

Более подробную информацию можно получить в Apple's documentation ,