2012-12-04 71 views
4
-(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應用程序啓動並在此代碼中移動。 但是,崩潰(此錯誤>UIImagePickerController,Check camera

return UIApplicationMain(argc, argv, nil, NSStringFromClass([CameraAppDelegate class])); > Thread 1: signal SIGABRT)當在模擬器中運行。

這是爲什麼?

+0

檢查調試器輸出,在斷點面板中添加一個「所有異常」斷點,然後重試。這應該告訴你更多關於提出的錯誤。 – rckoenes

+0

請在viewWillAppear中寫入該代碼並檢查 –

+0

謝謝您的許多建議。並且,對不起我的英文不好('·ω·') – onion

回答

7

使用此代碼,並在.h文件中添加UIImagePickerControllerDelegate委託

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

    } 
3

創建的NSObject類並將其命名爲ClsGlobal或您想要的名稱。

然後在ClsGlobal.h中寫入+(BOOL)isCameraDeviceAvailable並在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];來調用此方法,這意味着您的if條件看起來像if([ClsGlobal isCameraDeviceAvailable])

這種方法可以幫助您在任何控制器的整個項目中,您只需導入ClsGlobal,如#import "ClsGlobal.h"

+0

最近感謝您的舉報努力。將來,如果你看到一個應該作爲評論的答案,就把它標記爲「不是答案」;它有助於主持人更有效地處理它。謝謝! – casperOne

+0

@Mehul我無法應用你的類方法。我是這樣聲明的:'+(BOOL)isCameraDeviceAvailable;'然後以這種方式使用'if([self isCameraDeviceAvailable]){....}'?我收到錯誤'實例方法'-isCameraDeviceAvailable'找不到(返回類型默認爲'id')' – zerowords

+0

沒有親愛的你不能使用自己調用類方法,你可以使用類名來調用它。讓我來解釋你..看到我更新的答案 –