カスタムオーバーレイビューでカメラを使用する際に問題が発生します。エラー:インスタンスに送信されたセレクタが認識されません - オーバーレイビューでカメラを使用する
これは私が設定してUIImagePickerController
を提示するために使用するのViewControllerです:
import UIKit
class ViewController: UIViewController, CameraOverlayDelegate {
var imagePicker = UIImagePickerController()
@IBAction func pickImageButton(sender: AnyObject) {
if UIImagePickerController.isSourceTypeAvailable(
UIImagePickerControllerSourceType.Camera) {
imagePicker = UIImagePickerController()
imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
imagePicker.showsCameraControls = false
let myCameraOverlayViewController = CameraOverlayViewController(
nibName:"CameraOverlayView",
bundle: nil)
let customView = myCameraOverlayViewController.view
customView.frame = imagePicker.view.frame
imagePicker.cameraOverlayView = customView
myCameraOverlayViewController.delegate = self
presentViewController(imagePicker, animated: true, completion: nil)
} else {
print("No camera")
}
}
func didTakePhoto(sender: CameraOverlayViewController) {
print("Do something ...")
}
カスタムオーバーレイビューは、*の.xibファイルであり、これは私が使用CameraOverlayViewControllerです:
import UIKit
protocol CameraOverlayDelegate {
func didTakePhoto(sender: CameraOverlayViewController)
}
class CameraOverlayViewController: UIViewController {
var delegate: CameraOverlayDelegate! = nil
@IBOutlet var myView: UIView!
@IBAction func takePhotoButton(sender: AnyObject) {
delegate.didTakePhoto(self)
}
}
私がアプリを実行すると、takePhotoButton(...)
関数を呼び出すはずのボタンをクリックするとエラー(-[UIView takePictureButton:]: unrecognized selector sent to instance
)が表示されます。
私はXcode、iOS開発、そしてSwiftの新機能が魅力です。明らかに問題がある場合。 ;)
ありがとうございます。
ローレンスが書いたように、「間違ったオブジェクトでメソッドを呼び出しています」、[UIView takePictureButton:]はUIViewクラスのインスタンスでtakePictureButtonメソッド呼び出しを意味します(多分myViewですか?)、間違っているはずです。 UIButtonインスタンスの呼び出し、IBでの接続を確認してください(ファイルオーナーとUIButtonを右クリックしてください)、その理由はどこかにあると思います。 –