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 ];
}
如何“重新加载”视图? – robbartoszewski 2013-05-13 15:39:16
当我说重新加载时,我的意思是当一个新的viewController呈现 – JSA986 2013-05-13 15:42:46