Objective c NSToolbarDelegate错误?

Objective c NSToolbarDelegate错误?,objective-c,macos,cocoa,nstoolbar,Objective C,Macos,Cocoa,Nstoolbar,我正在以编程方式创建NSWindowController及其窗口。因此,我创建了一个简单的NSToolbar,其中包含: NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"PreferencesToolbar"]; [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel]; [toolbar setAllowsUserCustomization:NO]; [tool

我正在以编程方式创建NSWindowController及其窗口。因此,我创建了一个简单的NSToolbar,其中包含:

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

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

[self.window setToolbar:toolbar];

[toolbar release];
这一切都很好,但当我加上 [工具栏设置委托:自我]

我得到以下错误:

错误:委托无效(未实现所有必需的方法),因此无法使用!(若要调试,请向NSToolbarError添加断点


根据Ntoolbardelegate,没有必需的方法,那么这里出了什么问题?

为了使工具栏以您的
NSWindowController
子类作为其代理工作,您必须声明它符合
Ntoolbardelegate
协议:

@interface MyController : NSWindowController <NSToolbarDelegate>
重要信息虽然此方法在NSToolbarDelegate协议中标记为@可选,但如果以编程方式创建关联工具栏,则必须实现此方法。在Interface Builder中创建的工具栏可以实现此方法以增强功能


self
是否符合
NSToolbarDelegate
协议?如果不符合,请声明您的控制器符合协议,即使没有实现方法。是的:@interface PreferencesWindowController:NSWindowController谢谢,我完全错过了文档中的3倍“重要”。
-(NSToolbarItem *)toolbar:(NSToolbar *)toolbar
    itemForItemIdentifier:(NSString *)itemIdentifier
willBeInsertedIntoToolbar:(BOOL)flag;

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

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