Xcodeを更新してからまともにアプリを作ってなかったため、ver10.2.1での変更についていけなかった点が結構ありました。まず、ストーリーボードを開いてから、ボタンとかの配置どこいった??ってとこから始まりました。
だけど、基本的にはstory boardの使い方は一緒なので、試行錯誤的にイメージビューとナビゲーションバー、ボタンを配置。ナビゲーションバー上のボタンを押してカメラロールを表示して、画像を選択したらイメージビューに表示するコードを作成した。
画面の大きさや配置は後回しという事で。
swiftバージョンという事で、ピッカービューで選択した画像をイメージビューに表示する部分に若干時間がかかったので備忘録的にコードを書く。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import UIKit class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{ var picker: UIImagePickerController! @IBOutlet weak var IV_Main: UIImageView! @IBOutlet weak var BBI_FileAccess: UIBarButtonItem! //画面が初期化時に呼ばれる override func viewDidLoad() { super.viewDidLoad() //PickerViewの初期化 picker = UIImagePickerController() picker.delegate = self picker.sourceType = UIImagePickerController.SourceType.photoLibrary } //ファイルアクセスボタン押下 @IBAction func Push_BBI_FileAccess(_ sender: UIBarButtonItem) { present(picker, animated: true ) } //イメージピッカーが「キャンセル」された場合に呼ばれる func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true , completion: nil) } //イメージピッカーが「選択」された場合に呼ばれる func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { let image = info[.originalImage] as! UIImage IV_Main.image = image dismiss(animated: true , completion: nil) } } |
時間かかったポイントとして、イメージピッカーの画面で画像を選択してもl.28の関数が呼ばれん。という事で、l.6でPickerクラスを作ってから、l.13付近で初期化してdelegate設定しないとダメでした。前提として、l.3のdelegate宣言は忘れずに。
あと、Picker画面で画像を選択しても、dismissしないといつまでたっても画面がきえないのね。
ということが分かりました。
0 件のコメント:
コメントを投稿