-1

ユーザーがナビゲーションコントローラーの「+」ボタンを押すと、ユーザーオプションを提供するアクションシートが下からポップアップする基本的な写真アプリを作成しています。ここに写真があります:

私のアプリのスクリーンショット

通常のボタンを使用してこのアプリを動作させるコードがありますが、このアプリのコードに追加するとクラッシュします。コードは次のとおりです。

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate
{

    @IBOutlet weak var imageView: UIImageView!

    @IBAction func addPhoto(sender: UIBarButtonItem)
    {
        let photoOption = UIAlertController(title: nil, message: "Select an Input Type", preferredStyle: .ActionSheet)

        let photoLibraryAction = UIAlertAction(title: "Photo Library", style: .Default) { (alert: UIAlertAction!) -> Void in
            println("Photo Library Selected")   // Used for debugging

            // This code worked in my previous app
            let picker = UIImagePickerController()

            picker.delegate = self
            picker.sourceType = .PhotoLibrary

            self.presentViewController(picker, animated: true, completion: nil)
        }

        let cameraAction = UIAlertAction(title: "Camera", style: .Default) { (alert: UIAlertAction!) -> Void in
            println("Camera Selected")  // Used for debugging

            // This code worked in my previous app
            let picker = UIImagePickerController()

            picker.delegate = self
            picker.sourceType = .Camera

            self.presentViewController(picker, animated: true, completion: nil)
        }

        let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)

        photoOption.addAction(photoLibraryAction)
        photoOption.addAction(cameraAction)
        photoOption.addAction(cancelAction)

        self.presentViewController(photoOption, animated: true, completion: nil)
    }

    func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: [NSObject: AnyObject]!)
    {
        imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
        dismissViewControllerAnimated(true, completion: nil)
    }

}

奇妙なことは、これを実行してアプリがクラッシュした後、コードが機能していたときにアプリがまだクラッシュしたときに戻ったことです。

4

1 に答える 1

1

問題は、このコードをシミュレーターで実行していることです。しかし、シミュレーターにはカメラがありません。それはただのシミュレーターです!

したがって、.Cameraソースタイプでイメージピッカーコントローラーを呼び出そうとすると、例外が発生します-コンソールに役立つエラーメッセージが表示されるため、この質問で帯域幅を浪費することを回避できます...

于 2015-04-10T18:20:35.260 に答える