5
-(void)viewDidLoad
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
   {
      imagePicker = [[UIImagePickerController alloc] init];
      imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
      imagePicker.showsCameraControls = NO;
      [self.view addSubview:imagePicker.view];
      }
      else
      {
      // UIAlertView…
      }
}

    -(void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        imagePicker.delegate = self;
        [self presentViewController:imagePicker animated:NO completion:NO];
    }

カメラを持っていないときにアラートを出したいです。iPhoneアプリを起動し、このコードで移動します。しかし、クラッシュ(このエラー>

return UIApplicationMain(argc, argv, nil, NSStringFromClass([CameraAppDelegate class])); > Thread 1: signal SIGABRT)シミュレーターで実行する場合。

どうしてこれなの?

4

2 に答える 2

9

このコードを使用して、ファイルにUIImagePickerControllerDelegateデリゲートを追加します.h

 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  
    {
       UIImagePickerController* picker = [[UIImagePickerController alloc] init];
       picker.sourceType = UIImagePickerControllerSourceTypeCamera;
       picker.delegate = self;
      picker.wantsFullScreenLayout = YES;
      [self presentModalViewController:picker animated:YES];
    }
    else
    {
        UIAlertView *altnot=[[UIAlertView alloc]initWithTitle:@"Camera Not Available" message:@"Camera Not Available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        altnot.tag=103;
        [altnot show];
        [altnot release];

    }
于 2012-12-04T09:08:28.170 に答える
3

NSObjectクラスを作成し、のような名前ClsGlobal、または任意の名前を付けます。

次に、を書き込み+(BOOL)isCameraDeviceAvailableClsGlobal.h以下の関数をで実装しますClsGlobal.m

+(BOOL)isCameraDeviceAvailable
{
    BOOL isCameraAvailable=NO;
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
            isCameraAvailable = YES;
    }
    return isCameraAvailable;
}

このクラスメソッドを使用します。使用可能なカメラの場合はYESを返し、それ以外の場合はNOを返します。

[ClsGlobal isCameraDeviceAvailable];これで、ifConditionがのように見えることを意味するを使用してこのメ​​ソッドを呼び出すことができますif([ClsGlobal isCameraDeviceAvailable])

このメソッドは、任意のコントローラーでプロジェクト全体を支援します。のようにClsGlobalをインポートする必要があります#import "ClsGlobal.h"

于 2012-12-04T09:22:40.277 に答える