2015-03-13 3 views
32

Avendo un problema in qualche codice rapido che avevo scritto per un'applicazione di traduzione OCR. Il frammento di codice è qui sotto:Impostazione delegato per UIImagePicker restituisce l'errore

@IBAction func btnOCR(sender: AnyObject) { 

    var languageAlert = UIAlertController(title: "For Your Information...", message: "The OCR feature currently only supports English & French.", preferredStyle: .Alert) 
    languageAlert.addAction(UIAlertAction(title: "Okay", style: .Default, handler: { action in 

     var image = UIImagePickerController() 
     image.sourceType = UIImagePickerControllerSourceType.Camera 
     image.allowsEditing = false 
     image.delegate = self 
     presentViewController(image, animated: true, completion: nil) 

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

L'image.delegate = linea self restituisce l'errore: Impossibile assegnare un valore di tipo viewcontroller a uiimagepickerdelegate.

ho impostato il delegato nella definizione della classe, questo può essere visto qui sotto ...

class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource, UIImagePickerControllerDelegate { } 

ogni e qualsiasi aiuto sarebbe apprezzato, grazie in anticipo.

risposta

77

Hai dimenticato UINavigationControllerDelegate nella tua definizione di classe ViewController.

Oggetto delegato del selettore di immagini.

Dichiarazione

unowned(unsafe) var delegate: protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate>? 
+0

Che stupido errore! Haha non dimenticherò di nuovo. Grazie mille per il tuo aiuto! –

+0

segna questa risposta correggi e chiudi l'argomento –

+1

GRAZIE TANTO> I DIDNT SAPERE CHE HO BISOGNO DI UINAVIGATIONCONTROLLERDELEGATE ANCHE – coolcool1994

11

È necessario aggiungere UINavigationControllerDelegate alla dichiarazione di classe.

class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate {  


// Some thing here 

} 
+1

Grazie per aver fornito un esempio in swift. –