13 cocoa nsview nstoolbar nstoolbaritem
我现在正在与Cocoa挣扎2个小时但没有成功.我想在工具栏中添加自定义视图.所以,我在窗口中添加了一个NSToolbar(带有IB),并添加了我的视图(效果很好).IB自动创建了一个NSToolbarItem.我按照Apple的说明进行操作:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Toolbars/Tasks/AddRemoveToolbarItems.html#//apple_ref/doc/uid/20000755-BBCGJCDJ
问题是我现在不知道该怎么做,虽然它的标签显示在窗口中,但视图没有显示.
这是我用来绘制的代码(非常简单,它用于测试目的)
- (void)drawRect:(NSRect)dirtyRect {
[[NSColor blackColor] set];
[[NSBezierPath bezierPathWithRect:self.bounds] fill];
}
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
提前致谢.
小智 19
我解决了这个问题.
我将自定义视图放在笔尖的根目录中.我添加了一个经典的NSToolbarItem并创建了两个出口:一个用于自定义视图,另一个用于NSToolbarItem.在-(void)awakeFromNib,我setView:使用自定义视图调用NSToolbarItem.
根据互联网上的一些资源,这是Interface Builder的一个错误.
据一位Apple工程师在http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg35673.html的讨论中说,Interface Builder中有一个错误,即"自定义视图"(NSViews已创建)当用作NSToolbarItem的视图时,在IB中)未正确解码,因此不会出现在工具栏中.其他类型的NSView(例如NSButtons和NSBox)可以很好地用作工具栏项:您可以在Interface Builder中创建它们,然后将它们拖到工具栏中以使它们成为工具栏项.
(上面链接中的讨论意味着该错误归结于如何在运行时从XIB创建"自定义视图":使用initWithFrame:而不是initWithCoder:.讨论的日期是2009年,但是仍然没有修复XCode 4.5/OS X 10.8.)
在我的例子中,我使用常规NSView来包装一组控件(音量滑块和最小/最大按钮),而不是实现自定义NSView子类.通过使用NSBox作为容器而不是NSView,我能够避免这个问题:我使NSBox透明,无标题和无边框,因此它的行为与纯NSView包装器完全相同.这在IB中的工作量稍微多一点,但是省去了以编程方式将视图连接到工具栏项的麻烦.
| 归档时间: |
|
| 查看次数: |
6904 次 |
| 最近记录: |