2016-10-13 11 views
0

私は最近、iOS 10のSwift 3で写真を撮るか、画像を選択するコードを入れました。開いているカメラまたは写真ライブラリのいずれかを呼び出すと、アプリは「スレッド14:シグナルSIGABRT」でクラッシュします起こっていることの表示。私にとって、また私がデバッグしたものから、ネイティブのカメラビューや写真ライブラリをロードしようとしているときにこれが起こります。どんな助けでも大歓迎です!カメラまたはPhotoLibraryをUIImagePickerControllerでロードしますか?

以下のコード:あなたはこのlinkをチェック以降のiOS 10から今

<key>NSPhotoLibraryUsageDescription</key> 
<string>Use Photos</string> 

enter image description here

をInfo.plistファイルにキーを追加する必要が

class CameraViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { 

@IBOutlet weak var imageView: UIImageView! 


var imagePicker = UIImagePickerController() 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 


@IBAction func BTN_takePhoto(_ sender: AnyObject) { 

    print("button pressed") 

    if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera)){ 

     print("source available") 
     //imagePicker = UIImagePickerController() 
     print(1) 
     imagePicker.delegate = self 
     print(2) 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
     print(3) 
     imagePicker.mediaTypes = [kUTTypeImage as String] 
     print(4) 
     imagePicker.allowsEditing = true 
     print(5) 
     self.present(imagePicker, animated: true, completion: nil) 
     print(6) 
    } 
    else { 
     print("ERROR: source not available") 
     NSLog("No Camera") 
     let alert = UIAlertController(title: "No camera", message: "Please allow this app the use of your camera in settings or buy a device that has a camera.", preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default, handler: nil)) 
     self.present(alert, animated: true, completion: nil) 
    } 
} 

@IBAction func BTN_pickFromLibrary(_ sender: AnyObject) { 

    imagePicker.allowsEditing = false //2 
    imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary //3 
    present(imagePicker, animated: true, completion: nil)//4 


} 


func imagePickerController(imagePicker: UIImagePickerController, didFinishPickingMediaWithInfo info: NSDictionary!) { 
    NSLog("Received image from camera") 
    let mediaType = info[UIImagePickerControllerMediaType] as! String 
    var originalImage:UIImage?, editedImage:UIImage?, imageToSave:UIImage? 
    let compResult:CFComparisonResult = CFStringCompare(mediaType as NSString!, kUTTypeImage, CFStringCompareFlags.compareCaseInsensitive) 
    if (compResult == CFComparisonResult.compareEqualTo) { 

     editedImage = info[UIImagePickerControllerEditedImage] as! UIImage? 
     originalImage = info[UIImagePickerControllerOriginalImage] as! UIImage? 

     if (editedImage != nil) { 
      imageToSave = editedImage 
     } else { 
      imageToSave = originalImage 
     } 
     imageView.image = imageToSave 
     imageView.reloadInputViews() 
    } 
    imagePicker.dismiss(animated: true, completion: nil) 
} 

func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
    imagePicker.dismiss(animated: true, completion: nil) 
} 


/* 
private func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    imagePicker.dismiss(animated: true, completion: nil) 
    imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
} 
*/ 

}

答えて

0

詳細

+0

この回答を掲示する代わりに、重複としてフラグを立てる。 – rmaddy

+0

@rmaddy done ... –

関連する問題