2011-09-06 10 views

Respuesta

12

Debe tener una clase que se ajuste al protocolo NSToolbarDelegate y tener una instancia de esa clase como delegado de su barra de herramientas. Este delegado implementaría, por ejemplo, -toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:, que devuelve una instancia NSToolbarItem para un identificador dado, creando potencialmente ese elemento bajo demanda. Al hacer esto, está preparando a su delegado para devolver un elemento de barra de herramientas cuando la barra de herramientas le pide el elemento correspondiente a un identificador.

Hecho esto, puede agregar programáticamente un nuevo elemento de la barra de herramientas a la barra de herramientas enviando -[NSToolbar insertItemWithItemIdentifier:atIndex] a la instancia de la barra de herramientas. El argumento de cadena de identificador debe coincidir con el utilizado en el párrafo anterior. Si necesita eliminar un artículo, envíe -[NSToolbar removeItemAtIndex:] a la barra de herramientas.

Esto se describe con ejemplos en la sección Adding and Removing Toolbar Items del documento Toolbar Programming Topics for Cocoa.

+6

¿por qué tan complicado, Apple? – Lukas

+2

@Lukas porque cuando se diseñó NSToolbar, se necesitaron técnicas como esta para reducir el consumo de RAM. Este era un patrón estándar y cómo todo en Cocoa solía funcionar. Solo las cosas nuevas no funcionan así. –

Cuestiones relacionadas