应用程序在重新启动时不能正常运行

时间:2012-04-23 17:11:23

标签: objective-c ios relaunch

因此,我正在编写的应用程序允许用户从相机胶卷上传照片,并在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

1 个答案:

答案 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];
}

等等。

相关问题