|
He visto varias aplicaciones de escritorio que abren una ventana de preferencias desde el menu como firefox, safari, textmate, etc, además de que esa ventana no tiene botones para guardar los cambios. Ya tengo mi ventana diseñada, pero nose como darle la funcionalidad de guardar los cambios de usuario sin usar un boton y también poder usar esos valores en cualquier momento. |
|
Hola buenas. La verdad que no he abierto Xcode más que 2 veces jeje, pero curioseando la doc en un par de minutos encontre algunas cosas que espero que te sirvan. Creo que para salvar tus preferencias sin necesidad de usar un botón debes persistir tus datos cada vez que exista un cambio. Por ejemplo si hay un checkbox conectar con IBAction y persistir los datos en cada cambio, asumo que si estás en el paso de crear una ventana de preferencias conocerás como llamar métodos vía IBAction. Hay muchas formas de persistir los datos, pero en la documentación recomiendan que para estos casos como preferencias, posiciones de ventanas etc. se use NSUserDefaults, donde puedes guardar un valor con una clave. Con lo que sería algo así
Luego puedes volver a obtener los valores en otro momento con:
Bien, para guardar los datos todo bien. Tengo un problema al cargar los datos "salvados" y colocarlos en el checkbox. ¿En que método deberia poner al iniciar la aplicacion para la carga de eso valores? Mi código
y completo en https://gist.github.com/787472
(20 Ene '11, 07:20)
jyr
Yo tengo implementada mis preferencias a través de un subclase de NSWindowController. Siendo así, tienes disponible el método: -(void)windowDidLoad; En el cual puedes cargar los valores almacenados.
(20 Ene '11, 17:32)
JuanMiguel
Al crear mi funcion y cambiando mi clase que herede de NSWindowController me dice "object has no attribute 'setState_'" donde el object es mi checkbox. Parece como si no se estuviera cargando como debe, ¿alguna idea de que pueda ser? puse
Lo mismo sucede cuando ejecuto setSettings desde awakeFromNib y que este heredando de mi clase de NSViewController, parace que tengo que cargar mis outlets de alguna manera para que sean identificados, pero no se como.
(20 Ene '11, 18:30)
jyr
Resolvi el comentario anterior con http://bit.ly/eiOC6P , pero ahora, parece que no se estan guardando los datos o los estoy mostrando mal. Cuando acceso a los datos siempre me sale False, lo hice con el siguiente código.
Y para accesar a los datos con:
(22 Ene '11, 21:27)
jyr
Estaba leyendo mal el valor guardado, cuando se salva lo tengo como cadena y al leerlo usaba un bool,por ejemplo:
Y para poner los valores:
El código completo en https://gist.github.com/787472
(22 Ene '11, 23:23)
jyr
Recomendación: utiliza
(22 Ene '11, 23:35)
YoNoSoyTu
mostrando 5 de 6
mostrar todos
|
|
Hace unos minutos preguntabas como saber que elemento llama al evento. aunque borraste la pregunta lo pongo por si puede ayudar a alguien. EN IB puedes dar un valor Tag a cada elemento con lo que luego en el código puedes saber que elemento realiza la llamada.
Bueno, la pregunta iba más por como identificar el outlet con el valor que se esta "persistiendo" pero segui leyendo más info y entendi lo que comentas. Basicamente es
donde name.text es cualquiera de mis 5 elementos, por ejemplo el checkbox y userName el idenficador de ese elemento dentro de la "persistencia"
(19 Ene '11, 18:40)
jyr
|