SetAction для NSPopUpButton отключает мой popUpButton

Я создал свой NSPopUpButton программно с помощью следующего кода

[myPopUpButton insertItemWithTitle:@"--Select one--" atIndex:0];
[myPopUpButton addItemsWithTitles:[NSArray arrayWithObjects:@"1.One",@"Two",@"Three", nil]];

[myPopUpButton sizeToFit];
[myPopUpButton  setAction:@selector(popUpAction:)];
[fullBrowserView addSubview: myPopUpButton];

//PopUp Action
-(void)popUpAction:(id)sender
{
    NSLog(@"popUpAction");
}

Когда я нажимаю popUpButton, элементы меню popUpButton отключаются. Когда я использую interfacebuilder, он отлично работает с IBAction.

Почему этот setAction не работает для NSPopUpButton?


person Akbar    schedule 07.03.2012    source источник


Ответы (2)


Похоже, вы не устанавливаете объект target для отправки сообщения. Итак, в коде добавьте:

[myPopUpButton setTarget:self];

предполагая, что метод popUpAction: находится в том же классе.

Когда вы используете Interface Builder, он подключает действие селектора к цели.

Из документации к этому вызову:

- (void)setTarget:(id)anObject

Если anObject nil, но элементу управления все еще назначено допустимое сообщение действия, приложение следует по цепочке респондента в поисках объекта, который может ответить на сообщение.

В вашем случае нет объекта, отвечающего на сообщение.

person petert    schedule 07.03.2012

Даже если myPopUpButton имеет цель и действие, вам также может потребоваться добавить:

[myPopUpButton setAutoenablesItems:NO];

В противном случае каждый раз, когда нажимается кнопка, она может автоматически отключать все элементы в своем меню. (Я понимаю, что этот вопрос старый, но размещаю это решение на случай, если оно поможет другим).

person lifjoy    schedule 07.07.2016