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?

¿Fue útil?

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:.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top