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