2012-05-08 3 views
0

Я много исследовал этот. При касании кнопки я должен выбрать изображение с устройства и отобразить на экране.Использование ImagePickerController приводит к сбою моего приложения

Но это приводит к сбою моего приложения при нажатии или нажатии кнопки. Он вылетает из этой строки кода:

[self presentModalViewController:myPhotopicker animated:YES]; 

Я разрабатываю приложение IPad с помощью Xcode 4.2. Я использую симулятор iPad 5.0 для тестирования. И моя система работает на Mac OS X, версия 10.6.8.

Следующая функция вызывается при нажатии кнопки:

-(IBAction)getPhoto:(id)sender 
{ 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 
     if (myPhotopicker==nil) { myPhotopicker = [[UIImagePickerController alloc] init]; 
      myPhotopicker.delegate = self; }// create once! 
     myPhotopicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

     [self presentModalViewController:myPhotopicker animated:YES]; 

    } else { 
     NSString *str = @"Photo Album is not available!";  

    } 

} 
+0

Что такое ошибка аварии вы получаете в компиляторе? Я считаю, что у вас, скорее всего, заканчивается память. – Lefteris

+0

Я получаю сообщение об ошибке ». Тема 1: Программный сигнал:« SIGABRT ». –

+0

SIGABRT обычно означает, что программа выбрала исключение. В консоли отладчика должно быть больше информации. Вам нужно отредактировать свой вопрос, чтобы включить эту информацию Кроме того, вы можете установить точку останова в objc_exception_throw, чтобы получить трассировку стека, где выбрано исключение. – Lefteris

ответ

0

Я попробовал ваш код и может воспроизвести сбой в тренажере. Но он отлично работает на моем iPhone 4 с iOS 4.2.

Тем не менее, я сделал свою галерею в симуляторе, содержащую несколько фотографий. (Пуск в-тренажер Safari, открыть какую-нибудь страницу, сохранить несколько снимков с помощью длительного нажатия на них и выбрав сохранить из меню.)

Теперь, имитатор пишет

2012-05-08 15:53:55.605 test[5870:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'On iPad, UIImagePickerController must be presented via UIPopoverController' 

на консоль.

Хорошо, читать, сделано:

-(IBAction)getPhoto:(UIButton *)sender 
{ 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) 
    { 
     if (myPhotopicker==nil) { 
      myPhotopicker = [[UIImagePickerController alloc] init]; 
      myPhotopicker.delegate = self; 
     }// create once! 
     myPhotopicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
      // iPad Code: 
      UIPopoverController *popover = 
       [[UIPopoverController alloc] initWithContentViewController:myPhotopicker]; 
      [popover presentPopoverFromRect:sender.bounds 
            inView:self.view 
        permittedArrowDirections:UIPopoverArrowDirectionAny 
            animated:YES]; 
     } else { 
      // iPhone Code: 
      [self presentModalViewController:myPhotopicker animated:YES]; 
     } 
    } else { 
     NSLog(@"Photo Album is not available!"); 
    }  
} 

И теперь он выглядит так:
enter image description here

+0

Спасибо, он работал, когда я использовал UIPoOverController –

Смежные вопросы