2011-09-06 7 views
6

addNewItem:(NSToolbarItem *)itemという名前のメソッドを探しています。プログラムで作成したアイテムをツールバーに追加できますが、見つけられませんでした。ユーザーが何かをダウンロードしたときにSafariのように、ユーザーがクリックするとポップオーバーを表示するアイテムを追加したいと思います。プログラムで新しいNSToolbarItemを既存のツールバーに追加する方法はありますか?

答えて

12

NSToolbarDelegateプロトコルに準拠し、そのクラスのインスタンスをツールバーの代理人にするクラスが必要です。このデリゲートは、たとえば-toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:を実装し、特定の識別子に対してNSToolbarItemインスタンスを返します。要求に応じてそのアイテムを作成する可能性があります。これにより、ツールバーが識別子に対応する項目を要求すると、ツールバー項目を返すようにデリゲートを準備します。

これを実行すると、-[NSToolbar insertItemWithItemIdentifier:atIndex]をツールバーインスタンスに送信することで、ツールバーに新しいツールバーアイテムをプログラムで追加できます。識別子文字列の引数は、上記の段落で使用されたものと一致する必要があります。アイテムを削除する必要がある場合は、-[NSToolbar removeItemAtIndex:]をツールバーに送信してください。

これは、Toolbar Programming Topics for Cocoa文書のAdding and Removing Toolbar Itemsセクションの例で説明されています。

+6

なぜ複雑な、アップル? – Lukas

+2

@ Lukas NSToolbarが設計されたときには、このような手法がRAM消費を減らすために必要でした。これは標準的なパターンであり、ココアではどのように働いていたのですか?このように新しいものだけが動作しません。 –

関連する問題