addNewItem:(NSToolbarItem *)item
adlı bir yöntem mi arıyorsunuz, yoksa program aracılığıyla oluşturulmuş bir öğeyi araç çubuğuma eklememe izin veren bir şey arıyorum, ancak bulamadım. Kullanıcı bir şey indirdiğinde Safari'de olduğu gibi, kullanıcı tıkladığında popover gösteren bir öğe eklemek istiyorum.Varolan araç çubuğuna programsal olarak yeni NSToolbarItem nasıl eklenir?
cevap
NSToolbarDelegate
protokolüne uygun bir sınıfa sahip olmanız ve bu sınıfın bir örneğini araç çubuğunuzun temsilcisi olmanız gerekir. Bu temsilci, örneğin, belirli bir tanımlayıcı için bir NSToolbarItem
örneğini döndüren -toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
'u uygular; Bunu yaparak, araç çubuğunun bir tanımlayıcıya karşılık gelen öğe için sorulduğunda bir araç çubuğu öğesi döndürmek için temsilci hazırlıyorsunuz.
Bunu yaptıktan sonra, araç çubuğuna araç çubuğuna -[NSToolbar insertItemWithItemIdentifier:atIndex]
yollayarak yeni bir araç çubuğu öğesi ekleyebilirsiniz. Tanımlayıcı dizesi argümanı, yukarıdaki paragrafta kullanılanla eşleşmelidir. Bir öğeyi kaldırmanız gerekiyorsa, araç çubuğuna -[NSToolbar removeItemAtIndex:]
gönderin.
Bu, Toolbar Programming Topics for Cocoa belgesinin Adding and Removing Toolbar Items bölümündeki örneklerle açıklanmıştır.
neden bu kadar karmaşık, Apple? – Lukas
@ Lukas, çünkü NSToolbar tasarlandığında, bunun gibi teknikler RAM tüketimini azaltmak için gerekliydi. Bu standart bir desen ve Kakao'da _everything_'in nasıl çalıştığıydı. Sadece yeni şeyler böyle çalışmıyor. –