LoginSignup
0
1

More than 5 years have passed since last update.

Swift4 Xcode TextFieldの二種類のピッカーによる条件選択

Posted at

この記事は質問になります。
プログラミング 初心者です。

TextFieldを押して下からニョキと出てくるピッカー(ドラム)を二種類表示させてます
よくある地域の選択のページなのですが、色々調べたのですがわかりません

1つのピッカーには、日本の大まかな地域を表示(関東、関西、四国 etc)
もう1つのピッカーには47都道府県全てを表示させています。

大まかなピッカーで選択したエリア内の”県名だけ”を2つ目のピッカーに表示させたいのです
例 四国を選択→愛媛県、徳島県、香川県、高知県

なんとなくifを使うのかなって思うんですが、わかる方がいらしたらご教授お願いします。

以下コードです。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

import UIKit

class SecondViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var text_field_daieria: UITextField!
@IBOutlet weak var text_field_chueria: UITextField!

let daieria_arr = ["","北海道地方","東北地方","関東地方","中部地方","関西地方","中国地方","四国地方","九州地方","沖縄地方"]

let chueria_arr = ["","北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県"]

let my_pickerView = UIPickerView()

var current_arr : [String] = []

var active_textfield : UITextField!

override func viewDidLoad() {
     super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    text_field_daieria.delegate = self
    text_field_chueria.delegate = self

    my_pickerView.delegate = self
    my_pickerView.dataSource = self

    text_field_daieria.inputView = my_pickerView
    text_field_chueria.inputView = my_pickerView

    create_toolbar()
}

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    active_textfield = textField

    switch textField {
    case text_field_daieria :
        current_arr = daieria_arr
    case text_field_chueria :
        current_arr = chueria_arr
    default:
        print("default")
    }
    my_pickerView.reloadAllComponents()

    return true
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return current_arr.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return current_arr[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    print(current_arr[row])
    active_textfield.text = current_arr[row]
}
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1