Guardar botón oculto

Tengo un grupo de botones que cuando se hace clic están ocultos y muestran la imagen subyacente. Necesito saber la mejor manera de guardar su estado para que cuando se reinicie no vuelva a la vista sin hacer clic. es posible? Gracias.

-(IBAction)Act1 { 
Act1Button.hidden = YES;
}

-(IBAction)De1 {
Act1Button.hidden = NO;
}


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // initialization
}
return self;
}


- (IBAction)savedata:(id)sender
{

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 [defaults setValue:@"myValue" forKey:@"mykey"];
[defaults synchronize];

}


- (void)viewDidLoad
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (![userDefaults valueForKey:@"mykey"]) {
    [userDefaults setValue:@"myValue" forKey:@"mykey"];
    NSLog(@"setting value");
}
[userDefaults synchronize];

}


- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

'@interface testViewController : UIViewController
{
IBOutlet UIButton *Act1Button;
IBOutlet UIButton *De1Button;

}


@property (retain, nonatomic) IBOutlet UIButton *Act1Button;
@property (retain, nonatomic) IBOutlet UIButton *De1Button;


- (IBAction)Act1;
- (IBAction)De1;

-(IBAction)savedata:(id)sender;


@end`

preguntado el 03 de mayo de 12 a las 20:05

2 Respuestas

contestado el 03 de mayo de 12 a las 21:05

Lo he estado leyendo, pero no tiene sentido para mí dónde debo poner los códigos. ¿Tienes algún ejemplo? ¿También necesito hacer esto para cada botón? Gracias de nuevo. - Abbi Beuby Florencia

cada vez que alguien presiona un botón, escribe el estado en NSUserDefaults y realiza una [[NSUserDefaults standardUserDefaults] sincroniza] ... que escribe los valores predeterminados del usuario actual en la memoria persistente. Cuando se inicia su aplicación, simplemente lee el estado y actúa en consecuencia. Es difícil entrar más en él sin ver su código. Espero que esto ayude. - pho0

Estoy haciendo algo mal. Puedo guardar y volver a cargar si presiono el botón de inicio y reinicio la aplicación, pero si vuelvo a la pantalla del menú, pierdo mis cambios. Agregué el código en la parte superior. ¡Realmente espero que me puedas ayudar! Gracias de nuevo. - Abbi Beuby Florencia

Sí, simplemente vuelva a aplicar esos cambios cuando aparezca su vista. Una vez más, es difícil decirle dónde poner esto, ya que depende de su aplicación, pero si su menú solo está intercambiando UIViewControllers, restaurar el estado en viewDidLoad y viewDidAppear debería manejarlo por usted. - pho0

Según su código, se está perdiendo el paso muy importante de sacar los valores guardados de los valores predeterminados cuando la aplicación se carga y hacer algo con ellos.

Deberías tener algo más como esto:

-(IBAction)Act1 { 
  Act1Button.hidden = YES;
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  [defaults setValue:Act1Button.hidden forKey:@"act1buttonState"];
}

- (void)viewDidLoad {
  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  Act1Button.hidden = [userDefaults valueForKey:@"act1buttonState"];
}

De esta manera, está almacenando el cambio de estado cada vez que se presiona un botón, en lugar de necesitar un botón separado para guardar (probablemente mueva el guardado a su propio método que llamaría cada acción de botón). Además, cuando vuelva a cargar la vista más tarde, obtendrá el estado que se guardó previamente y configurará las visibilidades de los botones para que coincidan.

Este código simple le permitiría hacerlo de forma individual, por lo que debería considerar almacenar un NSDictionary en NSUserDefaults que contenga el estado de todos los botones. En viewDidLoad, puede obtener ese diccionario e iterar sobre todos sus valores y establecer todas las visibilidades de una sola vez.

contestado el 04 de mayo de 12 a las 02:05

Gracias por su respuesta, me preguntaba si podría darme algunos ejemplos de cómo podría guardar todos los estados de los botones en una sección de código. Tengo 50 estados, me gustaría que el usuario presione en cada estado individualmente ocultando el botón, para mostrar la imagen a continuación. Luego, cuando abandonan la aplicación y regresan más tarde, el botón aún está oculto. Tengo esto, pero cuando reinicio el simulador no se guarda ningún botón. Cualquier ayuda es apreciada. - Abbi Beuby Florencia

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.