2009-02-19 14 views

Respuesta

13

Para ampliar la respuesta de Chuck, simplemente necesita convertir su controlador en el delegado de su NSToolBar e implementar la barra de herramientasSelectableItemIdentifiers: delegar el método en ella. Por ejemplo, la siguiente aplicación le permitirá conservar la selección elegida en cada artículo barra de herramientas a excepción de la de la etiqueta "Inspeccionar":

- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar 
{ 
    NSMutableArray *allIdentifiers = [[NSMutableArray alloc] init]; 

    for (NSToolbarItem *toolbarItem in [toolbar items]) 
    { 
     if (![[toolbarItem label] isEqualToString:@"Inspect"]) 
      [allIdentifiers addObject:[toolbarItem itemIdentifier]]; 
    } 

    return [allIdentifiers autorelease]; 
} 

cacheamos la matriz allIdentifiers en una variable de instancia cuando hago algo así, tan que solo tengo que hacer la construcción del arreglo una vez.

+1

En el generador de interfaces para Xcode 4 ahora hay una pequeña casilla de verificación al hacer clic en un elemento de la barra de herramientas que dice seleccionable, pero al verificarlo parece que no hace nada. ¿algunas ideas? – Tony

+0

@Tony - Acabo de probar esto en Interface Builder y funcionó bien para mi aplicación, incluso sin el código anterior. No estoy seguro de por qué no funciona en su caso. –

+2

Resulta que realmente necesita conectar todos los elementos de la barra de herramientas a una acción para que se 'activen' – Tony

8

Si creó su barra de herramientas en Interface Builder, puede hacer clic en los elementos NSToolbarItems individuales y marcar la casilla Seleccionable en el Inspector para los que desee que se vean. Sin código necesario.

+0

Lo tengo integrado en el constructor de interfaces y he marcado la casilla de verificación seleccionable, pero parece que no ocurre nada. ¿Hay algo más que deba hacerse? – Tony

+0

No tengo idea, parece estar roto en la mayoría de los casos al configurarlo en IB solo puedo hacer que funcione con toolbarSelectableItemIdentifiers – valexa