2015-03-13 10 views
32

Mam problem z szybkim kodem, który napisałem dla aplikacji do tłumaczenia OCR. Fragment kodu jest poniżej:Ustawianie delegata dla UIImagePicker zwraca błąd

@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) 
} 

image.delegate = linia samo zwraca błąd: Nie można przypisać wartości typu viewcontroller do uiimagepickerdelegate.

Mam ustawiony delegata w definicji klasy, to można zobaczyć poniżej ...

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

wszystkich i każda pomoc będzie mile widziane, z góry dzięki.

Odpowiedz

77

Zapomniałeś o UINavigationControllerDelegate w swojej klasie ViewController.

Obiekt uczestnika selektora obrazu.

Deklaracja

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

Co za głupi błąd! Haha, nie zapomnę ponownie. Bardzo ci dziękuje za pomoc! –

+0

zaznacz tę odpowiedź, popraw i zamknij temat. –

+1

DZIĘKUJEMY TAK WIĘCEJ> NIE ZNAŁO SIĘ, ŻE POTRZEBUJĘ UINAVIGATIONCONTROLLERDELEGATE TOO – coolcool1994

11

Należy dodać UINavigationControllerDelegate do deklaracji klasy.

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


// Some thing here 

} 
+1

Dziękujemy za dawanie przykładu w szybkim tempie. –