NSComboBox - La obtención de la información seleccionada y NSComboBoxDataSource
-
19-09-2019 - |
Pregunta
Para la vida de mí, que estoy siendo confundido con NSComboBox
continuamente.
I creado un objeto que conforma el protocolo NSComboBoxDataSource
, y realizado:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
Me puse el ejemplo de mi NSComboBox
utilizar un origen de datos, y establecer este objeto como fuente. Que funciona muy bien, mi implementación devuelve el número de elementos, y devuelve un valor NSString
por un artículo en índices específicos.
A continuación, decido que quiero hacer algo cuando se selecciona algo, aquí es donde comienzan mis problemas. No existe un método obvio para anular en el protocolo NSComboBoxDataSource
para manejar la selección de elementos en el cuadro combinado.
Por lo tanto, también tengo mi objeto se ajusta a NSComboBoxDelegate
e implementar:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Desafortunadamente, a diferencia de la selección NSTableView
, objeto de la notificación no es el NSComboBox
el objeto del elemento seleccionado. "Está bien", me digo, voy a llamar al método NSComboBox
:
- (id)objectValueOfSelectedItem;
Esto debería devolver el elemento seleccionado y puede ir desde allí. Sin embargo, este método es que se llamará sólo cuando usesDataSource
se establece en NO
, que no es mi caso. Advertencias comienzan a volar cuando utilizo esto.
Por lo tanto, mi pregunta es, ¿cuál es la forma correcta de manejar selecciones NSComboBox
cuando se utiliza una fuente de datos?
Solución
Creo que quieres indexOfSelectedItem en lugar de objectValueOfSelectedItem. A continuación, ya que eres la fuente de datos que debe ser capaz de llamar a su propio método comboBox:objectValueForItemAtIndex:
.