2013-03-18 3 views
0

Код, который я опубликовал ниже, имеет две функции; первая - сделать снимок (который работает отлично), а второй - для выбора изображения из библиотеки (который не работает). Функции не вызываются должным образом. Пожалуйста, проверьте мой код и дайте мне знать, что случилось.Ошибка при добавлении фотографии из моей библиотеки?

Заранее спасибо.

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
    static NSDateFormatter *dateFormatter = nil; 
    NSString *stringDate = nil; 
    if (dateFormatter == nil) { 
     dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat:@"EE, d LLLL yyyy"]; 
     stringDate = [dateFormatter stringFromDate:[NSDate date]]; 
    } 
    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
     UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
     // storing to camera roll 
     UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:finishedSavingWithError:contextInfo:),nil); 
     CGSize newSize=CGSizeMake(320, 436); 
     UIGraphicsBeginImageContext(newSize); 
     [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
     UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     xapp.profileImage=newImage; 
     [[NSNotificationCenter defaultCenter]postNotificationName:@"addImage" object:nil]; 
    } 

    // Commit the change. 
    [self dismissModalViewControllerAnimated:YES]; 
} 

-(void)image:(UIImage *)image finishedSavingWithError:(NSError *)error contextInfo:(void *)contextInfo { 
    if (error) { 
     UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle: @"Save failed" 
          message: @"Failed to save image" 
          delegate: nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil]; 
     [alert show]; 
    } 
} 
+0

Каким образом код выбора из библиотеки не работает? Вызывает ли ошибка? Выходит ли сборщик? – gaige

+0

Вторая функция вызывается, когда при запуске UIImagePickerController возникает ошибка, а не когда фотография загружается из библиотеки. Можете ли вы быть более конкретными в отношении ошибки? Как вы вызывали UIImagePickerController для загрузки из библиотеки? –

+0

библиотека открыта нормально Если изображение выбрано, изображение не отображается в изображении View –

ответ

1

привет я просто поставить код полностью захватить изображение с камеры библиотеки фотографий просто проверить его и попытаться impliment в вашем проекте: -

-(IBAction)actionImage:(id)sender 
{ 
    UIActionSheet *option =[[UIActionSheet alloc]initWithTitle:@"Select" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Select Photo",@"Take Photo",nil]; 
    option.actionSheetStyle =UIActionSheetStyleDefault; 
    [option showInView:self.view]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (actionSheet.tag==2) 
    { 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 
    else 
    { 

     UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
     picker.delegate = self; 

     if(buttonIndex ==0) 
     { 
      if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) 
      {  
       picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
       [self presentModalViewController:picker animated:YES];  
      } 
     } 
     else if(buttonIndex ==1) 
     { 
      if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
      {  
       picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
       [self presentModalViewController:picker animated:YES];  
      } 
     } 
    } 
} 
#pragma mark - imagePickerController Delegate 
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
    imgUserImage.image = [info valueForKey:@"UIImagePickerControllerOriginalImage"];  

    return; 
} 

N OTE: - Не забудьте Включить связанную структуру или делегат. Надеюсь, что вам нужна помощь, вам не нужно дополнительное кодирование для этого материала, который вы просто делаете с помощью этого метода выше:

+0

библиотека открыта нормально. Если вы выберите изображение, изображение не будет отображаться на изображении. Просмотр –

+0

проверить, что IBOutLet подключен от Nib (XIB) или нет :) –

0

Есть много изменений, необходимых в вашем code..Here код для выбора изображения из library..I думает, лучше дать вам код, а исправления ошибок в yours..so, вот код ..enjoy ...

-(void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSString *mediaType = info[UIImagePickerControllerMediaType]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 

    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
     UIImage *image = info[UIImagePickerControllerOriginalImage]; 

     _imageView.image = image; 
     if (_newMedia) 
      UIImageWriteToSavedPhotosAlbum(image, 
       self, 
       @selector(image:finishedSavingWithError:contextInfo:), 
       nil); 
     } 
     else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) 
     { 
       // Code here to support video if enabled 
     } 
} 

-(void)image:(UIImage *)image 
finishedSavingWithError:(NSError *)error 
contextInfo:(void *)contextInfo 
{ 
    if (error) { 
     UIAlertView *alert = [[UIAlertView alloc] 
      initWithTitle: @"Save failed" 
      message: @"Failed to save image" 
      delegate: nil 
      cancelButtonTitle:@"OK" 
      otherButtonTitles:nil]; 
     [alert show]; 
    } 
} 
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

извините, такая же проблема –

+0

библиотека открыта в порядке. Если вы выберите изображение, изображение не будет отображаться в изображенииView –

+0

@ IOS234 вы попробуете этот код. работает для меня .. и думаю, что работает для вас тоже ... если вы хотите получить дополнительную помощь. – Shivaay