Pergunta

Estou criando um NSWindowController e sua janela programaticamente.Então eu crio um NSToolbar simples com:

NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"PreferencesToolbar"];

[toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
[toolbar setAllowsUserCustomization:NO];
[toolbar setAutosavesConfiguration:NO];

[self.window setToolbar:toolbar];

[toolbar release];

O que tudo funciona bem, mas quando eu adiciono [barra de ferramentas SetDelegate: self];

Estou tendo o erro a seguir:

ERRO:delegado inválido (não implementa todos os métodos necessários) e, portanto, não pode ser usado!(Para depurar, adicione um ponto de interrupção ao NSToolbarError

De acordo com NSToolbarDelegate não existem métodos obrigatórios, então o que está errado aqui?

Foi útil?

Solução

Para fazer a barra de ferramentas funcionar com o seu NSWindowController subclasse como seu delegado, você deve declará-la em conformidade com NSToolbarDelegate protocolo:

@interface MyController : NSWindowController <NSToolbarDelegate>

Também, a partir do documento, você deve garantir que alguns são implementadas, mesmo que sejam opcionais, porque você criou a barra de ferramentas programaticamente.Eles são :

-(NSToolbarItem *)toolbar:(NSToolbar *)toolbar
    itemForItemIdentifier:(NSString *)itemIdentifier
willBeInsertedIntoToolbar:(BOOL)flag;

-(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar;

-(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar;

Importante Embora este método esteja marcado como @optional no protocolo NSToolbarDelegate, ele deve ser implementado se a barra de ferramentas associada for criada programaticamente.As barras de ferramentas criadas no Interface Builder podem implementar este método para aumentar a funcionalidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top