Sto cercando un metodo chiamato addNewItem:(NSToolbarItem *)item
o qualcosa di simile che mi consenta di aggiungere un elemento creato a livello di codice alla barra degli strumenti, ma non ne ho trovato nessuno. Vorrei aggiungere un elemento che mostri un popover quando l'utente fa clic su di esso, come in Safari quando l'utente scarica qualcosa.Come aggiungere a livello di codice nuovo NSToolbarItem alla barra degli strumenti esistente?
risposta
È necessario disporre di una classe conforme al protocollo NSToolbarDelegate
e un'istanza di tale classe essere il delegato della barra degli strumenti. Questo delegato, ad esempio, implementerebbe -toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
, che restituisce un'istanza NSToolbarItem
per un dato identificatore, potenzialmente creando quell'elemento su richiesta. In questo modo, stai preparando il delegato a restituire un elemento della barra degli strumenti quando la barra degli strumenti lo richiede per l'elemento corrispondente a un identificatore.
Fatto ciò, è possibile aggiungere una nuova barra degli strumenti alla barra degli strumenti in modo programmatico inviando -[NSToolbar insertItemWithItemIdentifier:atIndex]
all'istanza della barra degli strumenti. L'argomento della stringa identificatore deve corrispondere a quello utilizzato nel paragrafo precedente. Se è necessario rimuovere un articolo, inviare -[NSToolbar removeItemAtIndex:]
alla barra degli strumenti.
Questo è descritto con esempi nella sezione Adding and Removing Toolbar Items del documento Toolbar Programming Topics for Cocoa.
perché così complicato, Apple? – Lukas
@Lukas perché indietro quando è stato progettato NSToolbar, tecniche come questa erano necessarie per ridurre il consumo di RAM. Questo era uno schema standard e il modo in cui ogni cosa a Cocoa funzionava. Solo le nuove cose non funzionano così. –