所以我几乎完成了一个应该表现得像照片库的应用程序。尽管尝试正确删除照片,但我遇到了新手问题。所以,我有 3 个 UIImageViews。图像存储在 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
如果有人知道如何解决这个问题,那就太好了!