Tengo una vista de imagen de 4 si hago clic en 1stimagen vista transferencia de imagen a la siguiente vista dibujable aquí el usuario puede editar la imagen usando el panel de dibujo. el usuario puede dibujar línea o rectitud en esa imagen, quiero guardar esa imagen en NSUserDefault y cuando el usuario regrese a la primera pantalla, reemplace esa imagen original con la imagen seleccionada previamente
Guardar imagen en NSUserDefault utilicé este código.
-(IBAction)SaveBtn:(UIBUttonSender*)sender
{
[delegate.imagesDef setObject:UIImagePNGRepresentation(previewImageView.image) forKey:@"first"];
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
delegate.image = [UIImage imageWithData:imageData];
NSLog(@"%@",[delegate.image description]);
NSLog(@"%@",imageData);
[delegate.imagesDef synchronize];
}
Este código funciona bien guardar imagen. lo registro pero cuando voy la imagen del controlador anterior no se reemplaza
Utilicé este código para establecer una nueva imagen editada.
if([delegate.imagesDef objectForKey:@"first"])
{
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
delegate.image = [UIImage imageWithData:imageData];
NSLog(@"%@",[delegate.image description]);
NSLog(@"%@",imageData);
NSLog(@"%@",delegate.image);
FirstImageView.image=delegate.image;
}
la imagen no ha cambiado, ¿cómo puedo resolver esto?
Por favor ayudame en esto.
gracias por adelantado.
Respuestas
5 para la respuesta № 1No deberías almacenar un UIImage
en el NSUserDefaults
. NSUserDefaults
está destinado a pequeños datos pero no a una imagen completa. Simplemente escriba la imagen en el disco (en el directorio de documentos) y guarde la ruta en NSUserDefaults.
Cargando:
NSString *pathToFile;
UIImage *image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:pathToFile atomically:YES];
[[NSUserDefaults standardUserDefaults] setObject:pathToFile forKey:@"image"];
Restaurando
NSString *pathToFile = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
NSData *imageData = [NSData dataWithContentsOfFile:pathToFile];
UIImage *image = [UIImage imageWithData:imageData];
Pero, ¿por qué no estás pasando el objeto UIImage en sí mismo entre tus ViewControllers usando propiedades?
0 para la respuesta № 2
Primero que nada usando NSUserDefault
para esto no se recomienda
Pocas alternativas:
1) puede asignar esta imagen a firstViewControllers
propiedad para que pueda acceder más tarde si tiene su objeto declarado en secondViewController
2) Puedes enviar un NSNotification
a firstViewController pensó que puede enviar la imagen a firstViewController
de secondViewController
Espero que esto te ayudará.