0

因此,我正在编写的应用程序允许用户从他们的相机胶卷上传照片,并显示在 UIImageView 中。我有一个“保存”按钮,可以在按下时保存图像。我还有一个“编辑”按钮,当点击它时,它允许用户点击照片,它将被删除。这就是我遇到问题的地方。

在测试运行时,我添加了三个图像,点击保存按钮,然后删除它们,它们完美删除。我可以完全关闭并重新启动应用程序,图像不再存在。但是,如果我添加三张图片,点击保存按钮,然后关闭并重新启动应用程序,然后尝试删除照片,它根本不起作用。图像从屏幕上消失,但在重新启动时再次加载。很奇怪。我对Objective-C完全陌生,我很惊讶我竟然做到了这一点,所以我在弄清楚如何从数组中删除它时遇到了问题。

我有NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);ym 代码,当我在关闭应用程序之前删除它时,它显示数组计数中有对象。当我再次从 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-类文件

4

1 回答 1

2

问题出在您的viewDidLoad方法中,您已经初始化self.array,但是在将图像加载到您UIImageView的 s 时,您忘记将它们添加到数组中,这就是删除功能不起作用的原因。您的删除函数正在尝试从空数组中删除一个对象。

在您的if语句中,您需要添加UIImageViewto self.array(注意:您需要更改self.array为 aNSMutableArray才能使此特定方法起作用)

if (!imageView.image) {
    imageView.image = loadedImage;
    [self.array addObject:imageView];
} 
else if (!imageView2.image) {
    imageView2.image = loadedImage;
    [self.array addObject:imageView2];
}

等等。

于 2012-04-23T17:51:15.537 回答