Ich habe eine 4-Bild-Ansicht, wenn Sie auf 1. klickenBildansicht Bildübertragung zur nächsten darstellbaren Ansicht Hier kann der Benutzer das Bild mit dem Zeichenblock bearbeiten. Benutzer kann Linie zeichnen oder auf diesem Bild korrigieren Ich möchte dieses Bild in NSUserDefault speichern und wenn Benutzer zurück den ersten Bildschirm das ursprüngliche Bild mit dem vorherigen ausgewählten Bild ersetzen
Bild in NSUserDefault speichern Ich habe diesen Code verwendet.
-(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];
}
Dieser Code funktioniert gut Bild speichern. Ich logge es aber wenn ich gehe, wird das vorherige Controller-Image nicht ersetzt
Ich habe diesen Code für das Setzen eines neuen bearbeiteten Bildes verwendet.
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;
}
Bild nicht verändert, wie kann ich das lösen.
Bitte hilf mir dabei.
Danke im Voraus.
Antworten:
5 für die Antwort № 1Sie sollten ein nicht speichern UIImage
in die NSUserDefaults
. NSUserDefaults
ist für kleine Datenstücke gedacht, aber nicht für ein ganzes Bild. Schreiben Sie das Image einfach auf die Festplatte (in das Dokumentenverzeichnis) und speichern Sie den Pfad in NSUserDefaults.
Wird geladen:
NSString *pathToFile;
UIImage *image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:pathToFile atomically:YES];
[[NSUserDefaults standardUserDefaults] setObject:pathToFile forKey:@"image"];
Wiederherstellen:
NSString *pathToFile = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
NSData *imageData = [NSData dataWithContentsOfFile:pathToFile];
UIImage *image = [UIImage imageWithData:imageData];
Aber warum übergeben Sie nicht einfach das UIImage-Objekt selbst mithilfe von Eigenschaften zwischen Ihren ViewControllern?
0 für die Antwort № 2
Zuallererst mit NSUserDefault
für dieses ding wird nicht empfohlen.
Einige Alternativen:
1) Sie können dieses Bild zuweisen firstViewControllers
Eigenschaft, damit Sie später darauf zugreifen können, wenn Sie das Objekt in deklariert haben secondViewController
2) Sie können eine senden NSNotification
an firstViewController gedacht, an den du das Bild senden kannst firstViewController
von secondViewController
Hoffe das wird dir helfen.