Xcodeを更新してからまともにアプリを作ってなかったため、ver10.2.1での変更についていけなかった点が結構ありました。まず、ストーリーボードを開いてから、ボタンとかの配置どこいった??ってとこから始まりました。
だけど、基本的にはstory boardの使い方は一緒なので、試行錯誤的にイメージビューとナビゲーションバー、ボタンを配置。ナビゲーションバー上のボタンを押してカメラロールを表示して、画像を選択したらイメージビューに表示するコードを作成した。
画面の大きさや配置は後回しという事で。
swiftバージョンという事で、ピッカービューで選択した画像をイメージビューに表示する部分に若干時間がかかったので備忘録的にコードを書く。
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 件のコメント:
コメントを投稿