2012-06-04 13 views
5

Quiero vincular la selección de NSPopUpButton a uno de los valores predefinidos. Para hacerlo más simple, imagina una aplicación de blog: tendría BlogPost y Category entidades (Datos principales, aunque no importa) y cada objeto BlogPost tiene un enlace a uno de los objetos Category (a través de la propiedad category).Cómo configurar enlaces para NSPopUpButton

Quiero tener al usuario cambiar la categoría a través NSPopUpButton, así que en mi XI ter, tengo NSArrayController que mantiene todas las categorías posibles y Ato los valores del botón contenido a:

  • Bind to: categoriesArrayController clave
  • controlador: arrangedObjects
  • clave
  • Modelo: título

Esto muy bien puebla emergente con títulos de todas las categorías. También puede unirse objeto seleccionado a:

  • Bind to: blogObjectController (o directamente a Blog objeto)
  • regulador dominante: selección
  • clave
  • Modelo: categoría

Esto funciona y la categoría correcta se selecciona en ventana emergente, sin embargo changi La selección ng no cambia la categoría bajo la cual se archiva la publicación del blog, sino que cambia el título de la categoría de publicación al valor seleccionado.

Teniendo en cuenta los enlaces anteriores esto realmente tiene sentido, así que mi siguiente paso fue cambiar el enlace de los valores de contenido emergente a solo organizadosObjetos (sin clave de modelo), objeto similarmente seleccionado. Esto funciona y la selección cambiante realmente cambia category de la publicación del blog a otra. PERO que no muestra título de la categoría en el menú emergente, pero en su lugar muestra el description de la categoría (que en el núcleo de datos termina con algo como <Category 0x1002b6990> (entity: Category; id: .......).

cual también tiene sentido, por lo que introdujo la costumbre NSValueTransformer (no -reversible). Esto corrige las descripciones de los elementos en el menú emergente, pero luego la selección no funciona. También intenté usar el transformador en el enlace de objetos seleccionado, pero eso solo desactiva mi ventana emergente por completo (tal vez sería necesaria una transformación inversa, pero esto complicaría sustancialmente el transformador).

Me falta algo obvio: ¿es posible lograrlo completamente con enlaces, sin introducir código adicional en cont capa de rodillo?

¡Sin embargo, todos son bienvenidos!

PS: esperanza sobre el texto tiene sentido :)

Respuesta

7

probarlo de la siguiente manera:

De NSPopupButton:

  • Enlazar contenido a: categoriesArrayController ControllerKey: arrangedObjects
  • Enlazar Valores de contenido a: categoriesArrayController ControllerKey: arrangedObjects Modelo Ruta de la clave: título
  • Enlazar objeto seleccionado a: blogObjectController ControllerKey: (empty) Modelo Ruta de la clave: content.category
+0

Eso es todo, Recuerda ahora, gracias :) Estaba confundido porque * Los valores de contenido * estaban deshabilitados, solo * Se permitió el contenido *. – Tom

Cuestiones relacionadas