所以我差不多完成了一個本應該像照片庫的應用程序。儘管試圖正確刪除照片,但我遇到了一個新手問題。所以,我有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
如果有人知道如何解決這個問題,那會太好了!
非常感謝,我嘗試了所有上述步驟,但最終刪除我的整個Documents文件夾,而不僅僅是畫面,笑從未見過這種情況發生。 – John 2012-04-26 16:02:49
你知道爲什麼會發生這種情況嗎? – John 2012-04-30 02:24:37
也許放置'的NSLog(@ 「刪除文件%@」,[self.fileNamesArray objectAtIndex:alertView.tag]);'刪除之前。這可能是您的數組尚未正確設置/更新。 – sooper 2012-04-30 11:52:50