прекратить сохранение изображения в библиотеку фотографий - PullRequest
0 голосов
/ 15 июля 2011

Как остановить сохранение изображения.который уже существует в библиотеке фотографий iphone.

Этот код предназначен для сохранения изображения .....

-(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];
    }
}

, если изображение сохраняется и снова и снова щелкает фотография, которая сохраняется ..... Как остановить сохранение изображения после его сохранения.

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Без большего контекста трудно сказать, но в широком смысле вы можете использовать переменную для отслеживания того, сохраняли ли вы ранее 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 голосов
/ 19 декабря 2013

Установите UIButton как IBOutlet. Затем установите для свойства enabled значение NO в IBAction. Установите UIButton IBOutlet обратно на YES где-нибудь в вашей программе, чтобы «перезагрузить» кнопку. Это похоже на использование UIStepper в том, что вы должны объявить его дважды ... один раз как IBAction и один раз как IBOutlet.

Это позволит вам использовать кнопку один раз, затем она будет «серой» или «отключена» для предотвращения дальнейшей активации. По сути, вы отключаете UIGestureRecognizer из UIButton.

Установите IBAction и IBOutlet.

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

Установите активированный на NO в IBAction.

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

}

Затем измените его на YES где-нибудь в вашей программе, чтобы «перезагрузить» кнопку, чтобы вы могли использовать ее снова.

_saveImageButton.enabled = YES;
0 голосов
/ 15 июля 2011

Если вы сохраняете только одно изображение, вы можете выполнить это с помощью BOOL ivar для флага, например:

BOOL 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];
 }

Я привел вам только пример.Вы можете не знать названия изображений, которые вы сохраняете.Если это так, вы можете отметить изображение (которое может быть выполнено несколькими способами) и добавить само изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...