【问题标题】:How to get NSComboBox in a NSToolbar to send messages to the datasource and delegate如何在 NSToolbar 中获取 NSComboBox 以将消息发送到数据源并委托
【发布时间】:2012-02-28 10:05:27
【问题描述】:

我在 NSToolbar 中有一个 NSComboBox,我希望组合框向其数据源和委托发送消息。

我的班级采用NSComboBoxDelegateNSComboBoxDataSource 协议。我像这样创建我的组合框

    NSRect comboBoxRect = NSMakeRect(0, 0, 175, 20);
    NSComboBox *sourceComboBox = [[NSComboBox alloc] initWithFrame:comboBoxRect];
    [sourceComboBox setDataSource:self];
    [sourceComboBox setDelegate:self];
    [sourceComboBox setUsesDataSource:YES];
    [sourceComboBox setEditable:NO];

    NSToolbarItem *sourceComboBoxItem = [[NSToobarItem alloc] initWithItemIdentifier:@"MyID"];
    [sourceComboBoxItem setView:sourceComboBox];
    [sourceComboBoxItem setMinSize:NSMakeSize(175*1.2, SEGMENT_HEIGHT)];
    [sourceComboBoxItem setMaxSize:NSMakeSize(175*1.2, SEGMENT_HEIGHT)];
    [sourceComboBoxItem setDelegate:self];
    [sourceComboBoxItem setTag:4];

我还实现了以下数据源和委托方法,其中有断点,但没有向这些方法发送任何内容。

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;

关于我可能做错的任何建议?谢谢。

【问题讨论】:

    标签: objective-c cocoa macos nstoolbar nscombobox


    【解决方案1】:

    我通过在 Interface Builder 中创建组合框然后将我的自定义类设置为组合框单元格的数据源和组合框的委托来让它工作。我没有采用NSComboBoxDataSource,而是采用了NSComboBoxCellDataSource

    我不知道为什么我的第一个方法不起作用,但这个新方法似乎做得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 2018-04-05
      • 2018-10-05
      • 1970-01-01
      • 2011-09-21
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多