現状のswiftの動き
①textFieldをタップすると、下からpickerViewが開く。
②pickerViewの項目から"Photo"をタップするとフォトライブラリが開く。
実現したいこと
①"Photo"が選択された瞬間にフォトライブラリが開くので、
"Done"をタップしたら、フォトライブラリが開くようにしたい。
②"Done"ボタンが右側にあるので、左側にしたい。
doneButtonItemに、コードを追記すれば良いと思うのですが分かりません。
ご教授のほど、よろしくお願い致します。
該当のソースコード
import UIKit class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UINavigationControllerDelegate, UIImagePickerControllerDelegate { func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return 5 } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return data[row] } // PickerViewで選択が完了した際に呼ばれるメソッド func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { textField.text = data[row] result.text = data[row] // 以下の条件分岐を追加 if (data[row] == "Photo") { func photoLibraryButton(_ sender: Any) { } // インスタンス生成 myImagePicker = UIImagePickerController() // デリゲート設定 myImagePicker.delegate = self //ここでイメージピッカーを表示させる。 present(myImagePicker, animated: true, completion: nil) } } //画像が選択された時に呼ばれるメソッド //ライブラリが閉じると、遷移前のimageViewに表示される。 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { // 選択された画像を取得 if let myImage = info[.originalImage] as? UIImage { // 遷移前の画面に画像を表示する sampleView.image = myImage } // イメージピッカーを消す self.dismiss(animated: true, completion: nil) } //画像選択がキャンセルされた時に呼ばれる. func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { // イメージピッカーを消す self.dismiss(animated: true, completion: nil) } @IBOutlet weak var textField: UITextField! @IBOutlet weak var result: UILabel! var pickerView = UIPickerView() var data = ["haru", "natsu", "aki","huyu","Photo"] override func viewDidLoad() { super.viewDidLoad() createPickerView() } func createPickerView() { pickerView.delegate = self textField.inputView = pickerView // toolbar let toolbar = UIToolbar() toolbar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44) let doneButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(ViewController.donePicker)) toolbar.setItems([doneButtonItem], animated: true) textField.inputAccessoryView = toolbar } @objc func donePicker() { textField.endEditing(true) } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { textField.endEditing(true) }
使用している言語
swift
Xvode 11.4
ご教授のほど、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー