dismissPopUp не распознается - PullRequest
0 голосов
/ 27 мая 2010

Предполагая, что button1 является кнопкой NSPopUpButton Предполагается, что меню, прикрепленное к кнопке 1, отображается и отслеживается.

[[button1 cell] dismissPopUp] --- dismissPopUp не распознается.

Почему метод dismissPopUp не распознается?

Спасибо

1 Ответ

0 голосов
/ 27 мая 2010

Поскольку NSCells не отвечают на dismissPopUp сообщения.

Если вы получаете это как исключение во время выполнения, убедитесь, что button1 действительно является всплывающей кнопкой, то есть убедитесь, что вы подключили этот выход к нужному объекту в IB, или что вы назначили правильный объект там, если вы создали его в коде. В последнем случае используйте отладчик для проверки переменной.

Если это просто предупреждение, которое вы получаете от компилятора, то, вероятно, это связано с тем, что cell является методом NSControl (гранд-суперкласса NSPopUpButton) и типизируется как возвращающий NSCell. Компилятор не может знать, что этот конкретный элемент управления вернет NSPopUpButtonCell. Решение состоит в том, чтобы присвоить результат сообщения cell переменной, типизированной как NSPopUpButtonCell *, а затем отправить сообщение dismissPopUp объекту в этой переменной:

NSPopUpButtonCell *cell1 = [button1 cell];
[cell1 dismissPopUp];

Если вы все еще получаете предупреждение, вам нужно добавить явное приведение перед выражением [button1 cell].

...