I'm trying to add a toolbar to INAppStoreWindow.
It has this property:
/** The title bar view itself. Add subviews to this view that you want to show in
the title b开发者_如何学运维ar (e.g. buttons, a toolbar, etc.). This view can also be set if
you want to use a different styled title bar aside from the default one
(textured, etc.). **/
@property (nonatomic, retain) NSView *titleBarView;
I have a toolbar created, and linked to an outlet in my code, but how can I add it as a subview if it has a class of NSToolbar, when it requires a NSView?
This throws an exception: [aWindow.titleBarView addSubview:toolbar];
Many thanks in advance
INAppStoreWindow weasels that titleBarView
between the window's widgets and the content view:
INAppStoreWindow.m:
- (void)setTitleBarView:(NSView *)newTitleBarView
{
if ((_titleBarView != newTitleBarView) && newTitleBarView) {
[_titleBarView removeFromSuperview];
[_titleBarView release];
_titleBarView = [newTitleBarView retain];
// Configure the view properties and add it as a subview of the theme frame
NSView *contentView = [self contentView];
NSView *themeFrame = [contentView superview];
NSView *firstSubview = [[themeFrame subviews] objectAtIndex:0];
[_titleBarView setAutoresizingMask:(NSViewMinYMargin | NSViewWidthSizable)];
[self _recalculateFrameForTitleBarView];
[themeFrame addSubview:_titleBarView positioned:NSWindowBelow relativeTo:firstSubview];
[self _layoutTrafficLightsAndContent];
[self display];
}
}
NSToolbar
isn't an NSView
subclass, it's meant to work in conjunction with the window itself, which is obscured by the titleBarView
. Just for kicks, set alphas of the gradient colors in INAppStoreWindow.m
and run the app; you'll can see the "real" window is still there underneath.
If you're set on using INAppStoreWindow
, your best bet would probably be to use your own custom view with buttons to fake a toolbar and adding that as a subview of the titleBarView
. Of course, in that case you'll have to do all the layout yourself.
精彩评论