これで、フォトギャラリーのように動作するはずのアプリがほぼ完成しました。写真を適切に削除しようとしていますが、初心者の問題が発生しています。したがって、3つのUIImageViewがあります。イメージはNSMutableArrayに保存され、起動時にロードされます。それらは完全に削除して保存します。しかし、UIImageView#2の画像を削除してからアプリを閉じて再起動すると、UIImageView#3の画像が#2の場所にスライドします。#2のスポットまたは#2の上の画像を削除しようとするまでは、これで問題ありません。
名前に基づいて写真を削除するので、UIImageView#2で写真を削除しようとすると、コードでImage2.pngを検索して削除します。しかし、アプリを再起動すると、UIImageView#3が#2の場所にあるため、UIImageView#3を削除しようとしても、そこにないImage2.pngを探しているため、削除されません。その場所にあるファイルの名前はImage3.pngです。ですから、私は少し途方に暮れていて、この問題を回避するためにコードを編集する方法がわかりません。これが私が使用している現在のコードです。ここでの犯人はですNSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%i.png",view.tag]];
。(私は各UIImageViewにタグを付け、それに基づいて削除しています):
- (IBAction)deleteButtonPressed:(id)sender {
UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete"
message:@"Are you sure you want to delete this photo?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[deleteAlertView show];
int imageIndex = ((UIButton *)sender).tag;
deleteAlertView.tag = imageIndex;
}
- (UIImageView *)viewForTag:(NSInteger)tag {
UIImageView *found = nil;
for (UIImageView *view in self.array) {
if (tag == view.tag) {
found = view;
break;
}
}
return found;
}
- (void)alertView: (UIAlertView *) alertView
clickedButtonAtIndex: (NSInteger) buttonIndex
{
if (buttonIndex != [alertView cancelButtonIndex]) {
UIImageView *view = [self viewForTag:alertView.tag];
if (view) {
[self.array removeObject:view];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%i.png",view.tag]];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
[fileManager removeItemAtPath:filePath error:&error];
if (error)
NSLog(@"Error: %@",error);
}
((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil;
}
[self.user setObject:self.array forKey:@"images"];
}
そして、これが参考のために私の完全な.mファイルです: https ://github.com/Joey502/Test-Thing/wiki/.m-Class-File
誰かがこの問題を修正する方法を知っているなら、それは素晴らしいことです!