我试图让用户选择删除从相机中拾取的图像,然后将其保存在NSUserDefaults
中,然后传递到另一个视图。我似乎无法删除图像。它最初删除了图像,但仍将原始拾取的图像放在传递给它的另一个视图上,并在重新加载视图时重新出现。
我需要在NSUserDefaults
中阅读viewDidLoad
方法吗?我尝试了一个if
语句,只有在NSUserDefaults
viewDidLoad
myPicture
!=nil
但仍有相同的行为
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([prefs objectForKey:@"image2"]) {
NSData *imgData = [prefs objectForKey:@"image2"];
self.engineersPicture.image = [UIImage imageWithData: imgData];
}
方法
viewDidLoad中:
- (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];
}
获取图像并保存到NSUserDefaults:
- (IBAction)deletePicture:(id)sender {
self.myPicture.image = nil;
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"image2"];
[[NSUserDefaults standardUserDefaults]synchronize ];
}
删除图片:
{{1}}
答案 0 :(得分: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];
}