Pregunta

Suponiendo button1 es un NSPopUpButton Suponiendo menú adjunto al botón 1 se muestra y se está realizando un seguimiento.

[[celular button1] dismissPopUp] --- dismissPopUp no se reconoce.

¿Por qué no se reconoce el método dismissPopUp?

Gracias

¿Fue útil?

Solución

Debido NSCells no responden a los mensajes dismissPopUp.

Si usted está recibiendo esto como una excepción en tiempo de ejecución, asegúrese de button1 es realmente un pop-up botón, es decir, asegúrese de que enganchará hasta que toma al objeto justo en IB, o que ha asignado la derecha objetar que hay si lo creó en el código. En este último caso, utilizar el depurador para examinar la variable.

Si esto es sólo una advertencia de que está recibiendo del compilador, es probablemente porque cell es un método de NSControl (Grand-superclase de NSPopUpButton), y se escribe como devolver un NSCell. El compilador no tiene forma de saber que este control particular, devolverá un NSPopUpButtonCell. La solución es asignar el resultado del mensaje cell a una variable de tipo NSPopUpButtonCell *, y luego enviar el mensaje dismissPopUp al objeto en esa variable:

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

Si, a pesar de la advertencia, necesitará añadir una conversión explícita frente a la expresión [button1 cell].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top