【发布时间】:2012-03-15 11:41:42
【问题描述】:
我正在从 iOS 转向 Cocoa,并试图应付我最初的几个程序。我认为在我的表单中添加NSComboBox 会很简单,那部分就是。我在界面中添加了<NSComboBoxDelegate, NSComboBoxDataSource>、两个数据回调和通知器:
@interface spcAppDelegate : NSObject <NSApplicationDelegate,
NSComboBoxDelegate, NSComboBoxDataSource>
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
@end
我控制将组合框拖到应用程序委托(这是我的简单默认应用程序中的唯一类)并连接了委托和数据源,但这些事件都没有触发。我认为应用程序委托是正确的,但由于它没有触发,我也尝试了“文件所有者”和“应用程序”。我不认为那些会奏效,但他们没有。
在 Cocoa 应用程序中为 NSComboBox 连接代理/数据源的正确方法是什么?
谢谢!
【问题讨论】:
-
当你说“它没有触发”时,你在做什么来测试它?调试器中的断点? NSLog?
-
“没有触发”是指我添加了委托方法并在其中设置了一个未达到的断点。您可能认为这两个数据方法未达到但comboBoxSelectionDidChange 应该可以访问是有道理的。再次是我的错,因为我错误地连接了该事件。所以我实际上有两个问题,但主要的解决方法是意识到有一个(新的?)复选框来表明我正在使用数据源。谢谢:)
标签: objective-c xcode cocoa interface-builder