因此,我正在编写的应用程序允许用户从相机胶卷上传照片,并在UIImageView中显示。我有一个“保存”按钮,可以在按下时保存图像。我也有一个“编辑”按钮,当点击时,它允许用户点击照片,它将被删除。这就是我遇到问题的地方。
在测试运行时,当我添加三个图像时,点击保存按钮,然后删除它们,它们完全删除。我可以完全关闭并重新启动应用程序,图像不再存在。但是,如果我添加三个图像,点击保存按钮然后关闭并重新启动应用程序,然后尝试删除照片,它根本不起作用。图像从屏幕上消失,但重新启动时再次加载。很奇怪。我对Objective-C完全不熟悉,我很惊讶我甚至做到了这一点,所以我在解决如何从阵列中删除它时遇到了问题。
我在ym代码中有NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);
,当我在关闭应用程序之前删除它时,它会显示数组计数中有对象。当我再次从Xcode运行并尝试删除已保存的图片时,它表示数组计数= 0.重新启动时,对象不在数组中。因此,问题是数组中的对象未正确保存。我不知道为什么不,我以为我正确地保存它们。这就是我将它们添加到数组中的方式:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
if (imageView.image == nil) {
imageView.image = img;
[self.array addObject:imageView];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView2.image == nil) {
imageView2.image = img;
NSLog(@"The image is a %@", imageView);
[self.array addObject:imageView2];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
...
...
-(IBAction)saveButtonPressed:(id)sender {
NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) objectAtIndex:0];
NSLog(@"Image view array before saving = %@", self.array);
for (UIImageView *imageViewToSave in self.array) {
NSInteger tag = imageViewToSave.tag;
UIImage *image = imageViewToSave.image;
NSString *imageName = [NSString stringWithFormat:@"Image%i.png",tag];
NSString *imagePath = [docsDir stringByAppendingPathComponent:imageName];
NSLog(@"Saving %@ to %@", image, imagePath);
[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:NO];
}
NSLog(@"Save Button Pressed");
}
我认为这会保存放入数组中的对象,但显然不会。我不知道怎么回事。
仅供参考,我将我的.h和.m文件放在wiki中。这是我的整个.h文件: github.com/Joey502/Test-Thing/wiki/.h-Class-File这是我的整个.m文件:github.com/Joey502/Test-Thing/wiki/.m-Class-File
答案 0 :(得分:2)
问题出在您的viewDidLoad
方法中,您已初步化self.array
,但在将图像加载到UIImageView
时,您忘记将它们添加到阵列中,这就是为什么删除功能不起作用。您的删除功能正在尝试从空数组中删除对象。
在if
语句中,您需要将UIImageView
添加到self.array
(注意:您需要将self.array
更改为NSMutableArray
特殊的工作方法)
if (!imageView.image) {
imageView.image = loadedImage;
[self.array addObject:imageView];
}
else if (!imageView2.image) {
imageView2.image = loadedImage;
[self.array addObject:imageView2];
}
等等。