NSComboBox - 如何为 2 个不同的组合框实现委托?

NSComboBox - how can I implement a delegate for 2 different comboBoxes?

我已经实现了 NSComboBoxDelegate:

-(void)comboBoxSelectionDidChange:(NSNotification *)notification{

}

- (void)controlTextDidEndEditing:(NSNotification *)aNotification{

}

- (void)comboBoxWillPopUp:(NSNotification *)notification{

}

- (void)comboBoxWillDismiss:(NSNotification *)notification{
}

但我有 2 个组合框 - 具有 2 个不同的功能。 有没有办法知道 运行 上没有哪个组合框并采取相应行动?

或者我必须在外部实现 2 个不同的委托?如果是这样 - 有没有一种简单的方法可以将信息传回我的 viewcontroller?

有没有办法获取有关通知发件人的信息?

你为什么不用标签?您可以将标签 101 分配给其中一个,将标签 102 分配给另一个,然后当他们触发委托时,您只需要一个 if 子句来检查对象的标签。

通知对象([notification object]notification.object)将是发送通知的组合框。

对于文本更改(controlTextDidEndEditing、controlTextDidChange...),请参见以下示例。

- (void)controlTextDidEndEditing:(NSNotification *)obj {
    if ([obj object] == combobox1) {

    }
    else if ([obj object] == combobox2) {

    }
}

至于选择变化,您需要为各个对象创建IBAction连接。