NSComboBox - как я могу реализовать делегат для 2 различных комбинированных списков?
Я реализовал NSComboBoxDelegate:
-(void)comboBoxSelectionDidChange:(NSNotification *)notification{
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotification{
}
- (void)comboBoxWillPopUp:(NSNotification *)notification{
}
- (void)comboBoxWillDismiss:(NSNotification *)notification{
}
но у меня есть 2 комбинированных списка - с 2 различными функциями. Есть ли способ узнать, какой comboBox нет на ходу, и действовать соответственно?
или мне нужно реализовать 2 разных делегата снаружи? и если так - есть ли простой способ передать информацию обратно в мой viewcontroller?
Есть ли способ получить информацию об отправителе уведомления?
3 ответа
Для изменения текста (controlTextDidEndEditing, controlTextDidChange...) см. Следующий пример.
- (void)controlTextDidEndEditing:(NSNotification *)obj {
if ([obj object] == combobox1) {
}
else if ([obj object] == combobox2) {
}
}
Что касается изменения выбора, вам необходимо создать соединения IBAction для соответствующих объектов.
Объект уведомления ([notification object]
или же notification.object
) будет поле со списком, которое отправило уведомление.
Почему вы не используете теги? Вы можете назначить тег 101 одному из них и 102 другому, тогда, когда они запускают делегата, вам просто нужно иметь предложение if, чтобы проверить тег объекта.