だから、私が書いているアプリは、ユーザーがカメラロールから写真をアップロードできるようにし、UIImageView に表示します。「保存」ボタンがあり、押すと画像を保存できます。「編集」ボタンもあります。タップすると、ユーザーは写真をタップして削除できます。これは私が問題を抱えているところです。
3 つの画像を追加してテストを実行し、保存ボタンを押してから削除すると、完全に削除されます。アプリを完全に閉じて再起動すると、画像が表示されなくなります。しかし、3 つの画像を追加して保存ボタンを押し、アプリを閉じて再起動し、写真を削除しようとすると、まったく機能しません。画像は画面から消えますが、再起動すると再び読み込まれます。非常に奇妙な。私は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-クラスファイル