Xcode SIGABRT при доступе к фотогалерее - PullRequest
1 голос
/ 27 июля 2011

Я пытался заставить свое приложение выбрать фотографию из фотогалереи, а затем отобразить ее, она работала в другом проекте, но в этом случае приложение работает нормально, но когда я нажимаю кнопку UIB, которая должна чтобы вызвать галерею, я получаю ошибку SIGABRT в main.m на int retVal = UIApplicationMain (argc, argv, nil, nil);

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

ViewController.h

#import <UIKit/UKit.h>

@interface ViewController : UIViewController
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>
{
    //Blah blah blah
}

//Blah blah blah
-(IBAction) selectExistingpicture;
@property (nonatomic, retain) IBOutlet UIImageView *theImageView;

//Blah blah blah

@end

ViewController.m

#import "ViewController.h"

@implementation ViewController

@synthesize theImageView;

-(IBAction) selectExistingPicture
{
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage : (UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    theImageView.image = image;
    [picker dismissModalViewControllerAnimated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)  picker
{
    [picker dismissModalViewControllerAnimated:YES];
}

Я связал selectExistingPicture с UIButton, но я не знаю, из-за чего эта кнопка вызывает у меня ошибки.

Любая помощь очень ценится.

Ответы [ 4 ]

0 голосов
/ 28 июля 2011

Как уже отмечалось, у вас есть опечатка (неправильный регистр в selectExistingPicture), отмеченный для вас в сообщении об ошибке:

причина: '- [ViewController selectExistingpicture]: не распознано селектор

0 голосов
/ 27 июля 2011

Ваша проблема не имеет ничего общего с фотогалереей.Скорее всего, он никогда не выполнит selectExistingPicture.

Возможные проблемы:

  1. Контроллер представления не является экземпляром ViewController, потому что вы этого не сделалиукажите правильный класс в IB.

  2. Вы пишете selectExistingpicture вместо selectExistingPicture (нижний или верхний регистр P) в нескольких местах.

0 голосов
/ 28 июля 2011

selectExistingpicture! = selectExistingPicture ...

, то есть вы объявляете selectExistingpicture, затем определяете selectExistingPicture, поэтому ваше автозаполнение выберет для вас selectExistingpicture, поскольку оно существует в вашем.h файл, это несоответствие вызовет предупреждение компилятора ... измените все экземпляры на правильный camelCased selectExistingPicture, и все будет в порядке ... хорошо, по крайней мере, эта ошибка исчезнет.

0 голосов
/ 27 июля 2011

Вот как я использую свой фотоаппарат

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, (NSString *) kUTTypeMovie,
                                        nil];

    imagePickerController.delegate = self;

    [self presentModalViewController:imagePickerController animated:YES];


}

else {
    NSLog(@"Error");

}

То, что я вижу неправильно с вашим, это

        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

, которое должно быть

        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

Также вы, кажется, пропали без вести

imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, (NSString *) kUTTypeMovie,
                                    nil];

Посмотрите, как я настроил мою

...