Без большего контекста трудно сказать, но в широком смысле вы можете использовать переменную для отслеживания того, сохраняли ли вы ранее coverPage
или нет, и просто избегать повторного сохранения, если оно у вас есть. Например:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPageAlreadySaved) {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Silly user, you already saved this image." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
else if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPageAlreadySaved = YES;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
... просто обязательно установите coverPageAlreadySaved = NO
при каждом изменении coverPage
(где бы вы ни делали это в своем коде).
С другой стороны, поскольку у вас уже есть чек на nil
, вы можете просто сделать:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPage = nil;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
... что предотвратит повторное сохранение изображения до тех пор, пока оно не будет обновлено где-то еще в вашем коде (в этот момент я предполагаю, что оно считается новым coverPage
).