2016-05-04 1 views
1

У меня возникли проблемы с использованием камеры с пользовательским видом наложения.Ошибка: непризнанный селектор отправлен в экземпляр - Использование камеры с OverlayView

Это ViewController я использую, чтобы создать и представить 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) 
    } 
} 

Когда я запускаю приложение, я получаю сообщение об ошибке (-[UIView takePictureButton:]: unrecognized selector sent to instance), как только я нажимаю кнопку, которая должна вызывать функцию takePhotoButton(...).

Я довольно новичок в Xcode, разработке iOS и Swift ... в случае, если проблема явно. ;)

Заранее спасибо.

ответ

0

Соединение между UIButton и @IBAction func takePhotoButton было сломано. Я исправил его, удалив все CameraOverlayViewController и создав новый.

Возможно, был бы более простой способ, но я еще не понял, как все работает вместе в Xcode.

0

Ваша ошибка означает, что вы вызываете метод на неправильном объекте. В основном, когда вы сталкиваетесь с unrecognized selector..., это означает, что у вас есть проблема в скобках.

takePhotoButton() имеет датчик типа AnyObject, но он вызывает didTakePhoto(), который имеет датчик типа CameraOverlayViewController. Таким образом, кнопка вызывает метод, который должен вызываться контроллером вида. Теперь вы видите несоответствие?

Фиксация ... Я не могу с этим поделать. Может, кто-то еще может. Как я сказал выше, один и тот же объект должен вызывать оба метода. Или, может быть, вы не присвоили что-то должным образом в Раскадке.

+0

Как писал Лоуренс, «вы вызываете метод на неправильном объекте», [UIView takePictureButton:] означает, что метод метода takePictureButton вызывает экземпляр класса UIView (возможно, это myView?), Это должно быть неправильно, поскольку оно должно вызывает экземпляр UIButton, проверьте ваше соединение в IB (щелкните правой кнопкой мыши на «Владелец файлов» и ваш UIButton), я считаю, что причина там где-то там. –