2011-04-02 23 views
5

tienda -Forma de guardar y cargar backgroundColor en NSUserDefaults

-(IBAction) setMyColor:(id)sender{ 

if (sender == yellowButton) { 
    [colorView setBackgroundColor:[UIColor yellowColor]]; 
} 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
UIColor *strColor = [colorView backgroundColor]; 
[userDefaults setObject:strColor forKey:@"myColor"]; 
[userDefaults synchronize]; 

}

carga -

- (void)viewDidLoad { 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[colorView setBackgroundColor[UIColor [userDefaults objectForKey:@"myColor"]]]; 

[super viewDidLoad]; 

}

pero no pudo correr ... tal vez el La pregunta es '¿cómo obtener el valor backgroundColor de UIView'?

Respuesta

13

puede utilizar

//save  
    NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color]; 
    [[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"]; 

//retrieve 
    NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"]; 
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 

or 

//save 
const CGFloat *components = CGColorGetComponents(pColor.CGColor); 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setFloat:components[0] forKey:@"cr"]; 
[prefs setFloat:components[1] forKey:@"cg"]; 
[prefs setFloat:components[2] forKey:@"cb"]; 
[prefs setFloat:components[3] forKey:@"ca"]; 

//retrieve 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
UIColor* tColor = [UIColor colorWithRed:[prefs floatForKey:@"cr"] green:[prefs floatForKey:@"cg"] blue:[prefs floatForKey:@"cb"] alpha:[prefs floatForKey:@"ca"]]; 
+0

La primera opción que funcionó para mí. ¡Gracias! –

+0

Esto me ayudó mucho ... método GP muy útil ya que NSUserDefaults no puede almacenar objetos regulares (tiene sentido, debe serializarlos como con cualquier otro método de almacenamiento). ¡Gracias! –

Cuestiones relacionadas