Eri*_*rik 3 macos cocoa objective-c nstoolbar
我以编程方式创建NSWindowController及其窗口.所以我创建了一个简单的NSToolbar:
NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"PreferencesToolbar"];
[toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
[toolbar setAllowsUserCustomization:NO];
[toolbar setAutosavesConfiguration:NO];
[self.window setToolbar:toolbar];
[toolbar release];
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但当我添加[toolbar setDelegate:self];
我收到以下错误:
错误:无效的委托(未实现所有必需的方法),因此无法使用!(要调试,请向NSToolbarError添加断点
根据NSToolbarDelegate,没有必要的方法,所以这里出了什么问题?
小智 8
为了使工具栏与您的NSWindowController子类一起作为其委托,您必须声明它符合NSToolbarDelegate协议:
@interface MyController : NSWindowController <NSToolbarDelegate>
Run Code Online (Sandbox Code Playgroud)
此外,从文档,你必须确保一些正在实施的,即使它们是可选的,因为您创建的工具栏程序.他们是 :
-(NSToolbarItem *)toolbar:(NSToolbar *)toolbar
itemForItemIdentifier:(NSString *)itemIdentifier
willBeInsertedIntoToolbar:(BOOL)flag;
-(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar;
-(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar;
Run Code Online (Sandbox Code Playgroud)
重要说明虽然此方法在NSToolbarDelegate协议中标记为@optional,但如果以编程方式创建关联的工具栏,则必须实现此方法.在Interface Builder中创建的工具栏可以实现此方法以增强功能.
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |