2009-06-06 13 views

Respuesta

3

NSTabView no es la clase más personalizable en Cocoa, pero es posible crear una subclase y hacer su propio dibujo. No utilizará mucha funcionalidad de la superclase además de mantener una colección de elementos de vista de pestaña, y terminará implementando varios métodos NSView y NSResponder para que el dibujo y el manejo de eventos funcionen correctamente.

Podría ser mejor mirar primero uno de los controles de la barra de pestañas de código libre o abierto, he usado PSMTabBarControl en el pasado, y era mucho más fácil que implementar mi propia subclase de vista de pestañas (que es lo que era reemplazando).

3

Recientemente he hecho esto para algo en lo que estaba trabajando.

Terminé usando una vista de tabla y luego dibujando las pestañas en otra vista. Quería que mis pestañas fueran parte de una barra de estado en la parte inferior de la ventana.

Es evidente que debe admitir los clics del mouse lo cual es bastante fácil, pero debe asegurarse de que el soporte del teclado también funcione, y eso es un poco más complicado: tendrá que ejecutar temporizadores para cambiar la pestaña después de no tener acceso al teclado medio segundo (eche un vistazo a la forma en que OS X lo hace). La accesibilidad es otra cosa en la que deberías pensar, pero es posible que encuentres que funciona: aún no lo he comprobado en mi código.

4

es posible configurar el estilo del NSTabView a tabless y luego controlarlo con un NSSegmentedControl que subclases NSSegmentedCell para anular el estilo y el comportamiento. Para tener una idea de cómo hacerlo, consulte este proyecto que emula las pestañas de estilo de Xcode 4: https://github.com/aaroncrespo/WILLTabView/.

0

Es muy fácil usar un NSSegmentedCell por separado para controlar la selección de pestañas en un NSTabView. Todo lo que necesita es una variable de instancia a la que puedan vincularse, ya sea en el propietario del archivo o en cualquier otra clase de controlador que aparezca en su archivo de punta. Sólo hay que poner algo como esto en la interfaz de la clase declaraton:

@property NSInteger selectedTabIndex; 

Luego, en los enlaces inspector IB, se unen el índice seleccionado, tanto de la NSTabView y la NSSegmentedCell a la misma selectedTabIndex propiedad.

¡Eso es todo lo que necesita hacer! No necesita inicializar la propiedad a menos que desee que el índice de pestaña seleccionado por defecto sea distinto de cero. Puedes guardar las pestañas o crear la tabla NSTabView, funcionará de cualquier manera. Los controles permanecerán sincronizados independientemente de qué control cambie la selección.

Cuestiones relacionadas