2013-05-13 62 views
0

我试图让用户选择删除从摄像机拍摄的图像,然后保存在NSUserDefaults,然后传递到另一个视图。我似乎不能保留图像删除。它最初会删除图像,但仍会将原始选取的图像放在传递给它的另一个视图上,并重新显示在视图的重新加载上。删除存储在NSSUserDefaults中的图像

我是否需要在viewDidLoad中用NSUserDefaults方法读取数据?我尝试过的if声明仅在viewDidLoad如果myPicture!=nil读出NSUserDefaults方法,但仍然得到了同样的行为

viewDidLoad中:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    if ([prefs objectForKey:@"image2"]) { 

     NSData *imgData = [prefs objectForKey:@"image2"]; 
     self.engineersPicture.image = [UIImage imageWithData: imgData]; 
    } 

获取图像并保存到NSUserDefaults的:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
DebugLog(@"info dict: %@", info); 
[picker dismissModalViewControllerAnimated:YES]; 
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
self.engineersPicture.backgroundColor = [UIColor whiteColor]; 
self.engineersPicture.image = image; 
NSData *imageData2 = UIImageJPEGRepresentation(image, 0.5f); 
NSString *path2 = [ICUtils pathForDocument:@"engineersPicture.png"]; 
[imageData2 writeToFile:path2 atomically:NO]; 



NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:imageData2 forKey:@"image2"]; 
[prefs synchronize]; 
self.engineersPicture.image = [UIImage imageWithData:imageData2]; 

[picker dismissModalViewControllerAnimated:YES]; 

} 

删除图片:

- (IBAction)deletePicture:(id)sender { 

self.myPicture.image = nil; 

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"image2"]; 
[[NSUserDefaults standardUserDefaults]synchronize ]; 

} 
+0

如何“重新加载”视图? – robbartoszewski 2013-05-13 15:39:16

+0

当我说重新加载时,我的意思是当一个新的viewController呈现 – JSA986 2013-05-13 15:42:46

回答

0

固定它

- (IBAction)deletePicture:(id)sender { 
self.engineersPicture.image = [UIImage imageNamed: @"user.png"]; 

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"image2"]; 
[[NSUserDefaults standardUserDefaults]synchronize ]; 

UIImage *image = [UIImage imageNamed: @"user.png"]; 
NSData *imageData2 = UIImageJPEGRepresentation(image, 0.5f); 
NSString *path2 = [ICUtils pathForDocument:@"engineersPicture.png"]; 
[imageData2 writeToFile:path2 atomically:NO]; 
}