Objective c Toolbar SelectableItemIdentifiers:未调用

Objective c Toolbar SelectableItemIdentifiers:未调用,objective-c,cocoa,delegates,nstoolbar,nstoolbaritem,Objective C,Cocoa,Delegates,Nstoolbar,Nstoolbaritem,我在试着做一些可选的NSTOOLBARITEM。我已正确连接IB中的所有内容,但Toolbar SelectableItemIdentifiers:不起作用。没有人给它打电话。委托是NSWindowController的文件所有者子类,工具栏位于工作表中。这是我的密码: // TOOLBAR DLGT - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar { NSLog(@"Foo");

我在试着做一些可选的NSTOOLBARITEM。我已正确连接IB中的所有内容,但Toolbar SelectableItemIdentifiers:不起作用。没有人给它打电话。委托是NSWindowController的文件所有者子类,工具栏位于工作表中。这是我的密码:

// TOOLBAR DLGT
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar {
  NSLog(@"Foo");
  NSMutableArray *arr = [[NSMutableArray alloc] init];
  for (NSToolbarItem *item in [toolbar items]) {
    [arr addObject:[item itemIdentifier]];
  }
  return [arr autorelease];
}
截图:

你能帮我吗


不,我不想使用BWToolkit。

您是否确定工具栏的委托出口指向您认为的类或实例?在那里调用的其他NSToolbar委托方法是否足够容易测试?

另外,除非您计划稍后在该循环中添加条件,否则可以使用return[[toolbar items]valueForKey:@itemIdentifier];替换整个循环和可变数组;。NSArray实现valueForKey:通过为键返回包含的每个对象的值的数组。