스위프트 3을 사용하면 다음과 같습니다. 내 코드는 (1) UIImagePickerController를 사용하여 카메라를 사용하거나 카메라 롤에서 선택한 다음 (2) 버튼의 코드를 제거한 편집보기 컨트롤러로 속행하는 선택보기 컨트롤러가 있어야합니다. 나는 IB를 사용하지 않고있다. 표기 : 다른 VC에 segueing하지 않는 경우
class SelectViewController: UIViewController {
// selection and pass to editor
let picker = ImagePickerController()
var image = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
}
extension SelectViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// MARK: Camera App
func openCameraApp() {
if UIImagePickerController.availableCaptureModes(for: .rear) != nil {
picker.allowsEditing = false
picker.sourceType = UIImagePickerControllerSourceType.camera
picker.cameraCaptureMode = .photo
picker.modalPresentationStyle = .fullScreen
present(picker,
animated: true,
completion: nil)
} else {
noCamera()
}
}
func noCamera(){
let alertVC = UIAlertController(
title: "No Camera",
message: "Sorry, this device has no camera",
preferredStyle: .alert)
let okAction = UIAlertAction(
title: "OK",
style:.default,
handler: nil)
alertVC.addAction(okAction)
present(
alertVC,
animated: true,
completion: nil)
}
// MARK: Photos Albums
func showImagePicker() {
picker.allowsEditing = false
picker.sourceType = .photoLibrary
present(picker,
animated: true,
completion: nil)
picker.popoverPresentationController?.sourceView = self.view
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
image = chosenImage
self.performSegue(withIdentifier: "ShowEditView", sender: self)
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: false, completion: nil)
}
// MARK: Seque to EditViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowEditView" {
if let vc = segue.destination as? EditViewController {
vc.image = image
}
}
}
}
의 .performSegue 전화와 최종 MARK 아래 코드를 제거합니다. (카메라/선택한 이미지의 크기는 입니다. var.)
출처
2017-01-19 21:10:11
dfd
보기를 위임자로 설정 했습니까? ** imagePicker.delegate = self ** someplace (아마 viewDidLoad)가 있습니까? – dfd
첫 번째 방법 @dfd – Steve
죄송합니다. 내가 볼 수있는 유일한 것은이 두 번째 오버라이드뿐입니다. 스위프트 3을 사용하고 있습니까? 그렇다면 ** func imagePickerController (_ picker : UIImagePickerController, didFinishPickingMediaWithInfo 정보 : [String : Any]) {** – dfd