これは私のオブジェクトクラスの関数ですが、 'didFinishPickingMediaWithInfo'関数は画像を撮影した後に呼び出されません。また、imagepickerを提示しているのViewControllerは異なるスウィフトのファイルであるUIImagePickerControllerが自分のObjectクラスに委譲しないのはなぜですか?
0
A
答えて
-1
この:
self.viewController.present(imagePicker, animated: true, completion: nil)
次のようになります。
self.present(imagePicker, animated: true, completion: nil)
0
私は同じ問題を抱えていたし、私は解決策を見つけました、私はバージョンを投稿しています(私は写真ライブラリから写真を撮っていますが、それは同じです:))。
私はメモリ管理の問題がありました。 カメラのハンドラクラス(デリゲートを内部に...)をインスタンス化したIBAction関数を作成しました。関数の終わりに、変数は範囲外になり、割り当てが解除されます。この問題を解決するために、インスタンス変数として作成しました。
私UiButtonとVCのための私のコードです:
class STECreateUserVC: UIViewController {
@IBOutlet weak var imgAvatar: UIImageView!
let cameraHandler = STECameraHandler()
@IBAction func buttonPressed(_ sender: UIButton) {
cameraHandler.importPictureIn(self) { [weak self] (image) in
self?.imgAvatar.image = image
}
}
}
...そしてそれは私のハンドラです:
class STECameraHandler: NSObject {
let imagePickerController = UIImagePickerController()
var completitionClosure: ((UIImage) -> Void)?
func importPictureIn(_ viewController: UIViewController, completitionHandler:((UIImage) -> Void)?) {
completitionClosure = completitionHandler
imagePickerController.delegate = self
imagePickerController.allowsEditing = true
imagePickerController.sourceType = .photoLibrary
imagePickerController.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
viewController.present(imagePickerController, animated: true, completion: nil)
}
}
extension STECameraHandler: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let completitionClosure = completitionClosure, let image = info[UIImagePickerControllerEditedImage] as? UIImage {
completitionClosure(image)
}
imagePickerController.dismiss(animated: true)
}
}
私はクリーンなコードを持っているために、クロージャを使用しました。
関連する問題
- 1. Python abcクラスを拡張するクラスの自動委譲
- 2. 非自己委譲が呼び出されていない
- 3. UIImagePickerControllerが委譲したときdidFinishPickingMediaWithInfoが呼び出されますか?
- 4. 固定幅タイプはなぜプリミティブに委譲するのですか?
- 5. 静的コンテンツのjqueryイベント委譲が機能しない
- 6. シングルトンメソッドと委譲メソッドが異なる動作をするのはなぜですか?
- 7. オーバーライド内からクラス委譲を使用するときに委譲された関数を呼び出す
- 8. UIImagePickerControllerをナビゲーションスタックにプッシュできないのはなぜですか?
- 9. Websphereクラスローダー委譲モード
- 10. 委譲パターン用UML
- 11. SVG要素のイベント委譲
- 12. pythonサブプロセスの入力委譲
- 13. なぜこの委任をしないのですか?コンソールアプリで
- 14. Object(null)をnullにしないのはなぜですか?
- 15. modalViewControllerはコールバックを委譲します - HowTo?
- 16. NSFetchedResultsControllerは異常な動作を委譲します
- 17. なぜ自分のユーザーコントロールライブラリに独自のタブがないのですか?
- 18. なぜ `object`クラスのインスタンスはPythonでは不変ですか?
- 19. GCが自動的にクラスのメンバーを処分しないのはなぜですか?
- 20. クラスOOからオブジェクト委譲パターンへのシーケンス
- 21. na.rmが自分のコードで動作しないのはなぜですか?
- 22. rest_framework.authentication.BasicAuthenticationが自分のコードで動作しないのはなぜですか?
- 23. なぜopenssl_signが自分のpdfに署名していないのですか?
- 24. イベントを委譲するパターン
- 25. 自分のbutton.enabledが自分のコードで本当に表示されないのはなぜですか?
- 26. なぜネスティングの "yield from"ステートメント(ジェネレータ委譲)が `None`値の終了を生成しますか?
- 27. JpaRepositoryが自分のエンティティを更新しないのはなぜですか?
- 28. テーブルビューセル内で分割するメソッドを委譲する
- 29. 私のクラスが自分のメソッドを認識しないのはなぜですか?
- 30. なぜボトルピーは自分のオプションが嫌いですか?
あなたはシミュレータや電話でこれを試していますか?シミュレータにはカメラがないので、シミュレータでは動作しません –
私はこれを電話で試しています – Dee
@Dee info.plistに 'NSPhotoLibraryUsageDescription'を追加しましたか? ? –