Error: unrecognized selector sent to instance - Using Camera with OverlayView
Error: unrecognized selector sent to instance - Using Camera with OverlayView
我在使用带有自定义叠加视图的相机时遇到了一些问题。
这是我用来设置和呈现 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 的新手……以防问题很明显。 ;)
提前致谢。
您的错误意味着您在错误的对象上调用了方法。基本上遇到unrecognized selector...
就说明括号里面有问题
takePhotoButton()
有一个 AnyObject
类型的发件人,但它调用 didTakePhoto()
有一个 CameraOverlayViewController
类型的发件人。所以一个按钮调用一个应该由视图控制器调用的方法。现在你看到差异了吗?
正在修复它...我帮不了你。也许别人可以。正如我上面所说,同一个对象必须调用你的两个方法。或者你没有在情节提要中正确分配一些东西。
UIButton
和 @IBAction func takePhotoButton
之间的连接已断开。我通过删除整个 CameraOverlayViewController
并制作一个新的来修复它。
可能会有更简单的方法,但我还没有弄清楚 Xcode 中的所有内容是如何协同工作的。
我在使用带有自定义叠加视图的相机时遇到了一些问题。
这是我用来设置和呈现 UIImagePickerController
:
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 的新手……以防问题很明显。 ;)
提前致谢。
您的错误意味着您在错误的对象上调用了方法。基本上遇到unrecognized selector...
就说明括号里面有问题
takePhotoButton()
有一个 AnyObject
类型的发件人,但它调用 didTakePhoto()
有一个 CameraOverlayViewController
类型的发件人。所以一个按钮调用一个应该由视图控制器调用的方法。现在你看到差异了吗?
正在修复它...我帮不了你。也许别人可以。正如我上面所说,同一个对象必须调用你的两个方法。或者你没有在情节提要中正确分配一些东西。
UIButton
和 @IBAction func takePhotoButton
之间的连接已断开。我通过删除整个 CameraOverlayViewController
并制作一个新的来修复它。
可能会有更简单的方法,但我还没有弄清楚 Xcode 中的所有内容是如何协同工作的。