I'm trying to add an NSToolbar to an existing application. I need compatibility with 10.4, so I'm creating the toolbar programmatically, initializing and configuring the toolbar in my -init. On launch, the toolbar does not appear and none of its delegate methods are called even though I setDelegate:self in -init. If I remove any of the delegate methods, I get an error in the console:

2010-12-19 13:13:21.415 ToolbarTest[16973:903] ERROR: invalid delegate <ToolbarTest: 0x422f30> (does not implement all required methods), and so can not be used!

This output actually came from a bare bones test application I created in an attempt to isolate the problem. Here is my code:
mainWindow is an NSWindow instance setup as an IBOutlet

@implementation ToolbarTest

-(id)init{

if(self = [super init]){

toolBar = [[[NSToolbar alloc] initWithIdentifier:@"MainToolbar"] autorelease];
[toolBar setAllowsUserCustomization:YES];
[toolBar setAutosavesConfiguration:YES];
[toolBar setDisplayMode: NSToolbarDisplayModeIconAndLabel];
[toolBar setDelegate:self];

[mainWindow setToolbar:toolBar];

NSLog(@"Init called");
}
return self;


}
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar{

return [NSArray arrayWithObjects:NSToolbarPrintItemIdentifier,
NSToolbarShowColorsItemIdentifier,
NSToolbarShowFontsItemIdentifier,
NSToolbarCustomizeToolbarItemIdentifier,
NSToolbarFlexibleSpaceItemIdentifier,
NSToolbarSpaceItemIdentifier,
NSToolbarSeparatorItemIdentifier, nil];

}

//- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag{
//
// return nil;
//}


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

return nil;
}


- (void)toolbarDidRemoveItem:(NSNotification *)notification{
return;
}

- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar{
return nil;
}

- (void)toolbarWillAddItem:(NSNotification *)notification{
return;
}

@end

The application into which I'd like to add the toolbar has an NSTableView as well. Since the toolbar delegates aren't being called but the tableview's are, I added this to one of the tableview delegate methods just see what was going on with the toolbar:


- (int)numberOfRowsInTableView:(NSTableView *)aTableView{

[toolBar setVisible:YES];
BOOL cansee;
cansee = [toolBar isVisible]; // Returns NO

return 5;
}
Anyone have any ideas what's going on? Oh and I'm using Xcode 3.1.4 on Intel under 10.6
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to