2011-07-15 61 views
0

如何停止保存圖像。這已經存在於iphone照片庫中。停止將圖像保存到照片庫

該代碼可用於savingImage .....

-(IBAction)saveImage:(id)sender 
{ 

    NSLog(@"calling save"); 

    if (coverPage !=nil) 
    { 
     NSData * imageData = UIImagePNGRepresentation(coverPage); 
     UIImage *theImage = [UIImage imageWithData:imageData]; 
     UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil); 
    } 

    else { 
     UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancle" otherButtonTitles:@"OK",nil]; 
     [alertView show]; 
     [alertView release]; 
    } 
} 

如果圖像保存,再而點擊照片保存.....如何停止保存圖像一旦保存。

回答

1

沒有更多的上下文很難說,但一般來說,您可以使用一個變量來跟蹤您之前是否保存過當前的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)。

+0

'黑暗'的一面是,如果用戶直接從_Photo Library_中刪除圖像,應用程序將不會收到有關更新存儲值的任何通知。 – holex

0

如果它是你節省然後只是一個形象,你可以只用BOOL伊娃的標誌執行此,如:

BOOL imageSaved; 

,只要你輕點按鈕,它只會檢查,如果imageSaved呢!執行保存。 但如果它是一個以上的圖像,那麼你可以做到這一點使用NSMutableArray.Like:

NSMutableArray *savedImages;//it's an ivar 

然後執行保存操作前:

NSString *imageName=......//Here I asssume you can get the image's name 
if(!imageSaved) 
NSMutableArray *savedImages=[[NSMutableArray alloc]init]; 
if (![savedImages containsObject:imageName]){ 

.........這裏來保存操作 ,並在年底你imageName添加到陣列

[savedimages addObject:imageName]; 
} 

我已經給你只是一個例子。您可能不知道您保存的圖像的名稱。如果是這種情況,您可以標記圖像(可以通過多種方式執行)並添加圖像本身。

0

UIButton也設爲IBOutlet。然後在IBAction中將enabled屬性設置爲NO。將UIButton IBOutlet設置回您的程序中的其他位置以「重置」按鈕。它類似於使用UIStepper,因爲您必須聲明兩次...一次作爲IBAction並且一次作爲IBOutlet

這將允許您使用該按鈕一次,然後它是「灰色」或「靜音」,以防止進一步激活。基本上你是從UIButton禁用UIGestureRecognizer

設置IBActionIBOutlet

- (IBAction)saveImageButton:(id)sender; 
@property (weak, nonatomic) IBOutlet UIButton *saveImageButton; 

將IBAction中的啓用設置爲NO。

- (IBAction)saveImageButton:(id)sender { 
UIImageWriteToSavedPhotosAlbum(_processedImageView.image, nil, nil, nil); 
_saveImageButton.enabled = NO; 

}

然後將其更改爲YES別的地方在你的程序「重置」按鈕,以便您可以再次使用它。

_saveImageButton.enabled = YES; 
相關問題