質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2195閲覧

複数のピッカーを表示させたい!

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2018/08/19 13:02

二つのピッカーを表示させることはできているのですがそれ以上、表示させることが出来ません。
色々模索したのですがダメでした。
性別と年齢のピッカーは表示できているのですがあとの季節と都道府県が表示できていません。
関連付け等はしております。
模索した方法としましては 1個目のピッカーの設定
return agedataList.count
}else{
return seibetudataList.count
}
return agedataList.count
にてreturn seasonListなどを追加しましたがダメでした。
どうか教えていただきたいと思います。よろしくお願いします。

import UIKit class secondViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { @IBOutlet weak var seibetupicker: UIPickerView! @IBOutlet weak var agepicker: UIPickerView! @IBOutlet weak var seasonpicker: UIPickerView! @IBOutlet weak var Prefecturespicker: UIPickerView! let seibetudataList = ["指定なし","男性","女性","不明"] let agedataList = ["指定なし","10代","20代","30代","40代","50代","60代","70代","80代","90代"] let seasonList = ["指定なし","春","夏","秋","冬"] let PrefecturesList = ["北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","鹿児島県","沖縄県"] var selectedSeibetu: String? override func viewDidLoad() { super.viewDidLoad() seibetupicker.delegate = self seibetupicker.dataSource = self agepicker.delegate = self agepicker.dataSource = self seasonpicker.delegate = self seasonpicker.dataSource = self Prefecturespicker.delegate = self Prefecturespicker.dataSource = self // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() agepicker.numberOfRows(inComponent: 0) // Dispose of any resources that can be recreated. } func numberOfComponents(in pickerView: UIPickerView) -> Int { // 表示する列数 return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { // アイテム表示個数を返す if pickerView == agepicker { // 1個目のピッカーの設定 return agedataList.count }else{ return seibetudataList.count } return agedataList.count } // UIPickerViewDelegate func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { // 表示する文字列を返す if pickerView == agepicker { // 1個目のピッカーの設定 return agedataList[row] }else { return seibetudataList[row] } return agedataList[row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if pickerView == seibetupicker { selectedSeibetu = seibetudataList[row] } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

delegateにpickerView(_:numberOfRowInComponent:)がありますよね。これを

swift

1 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 2 3 switch pickerView { 4 case agepicker: 5 return agedataList.count 6 case seibetupicker: 7 return seibetudataList.count 8 case seasonpicker: 9 return seasonList.count 10 case Prefecturespicker: 11 return PrefecturesList.count 12 default: 13 fatalError() 14 } 15 16// if pickerView == agepicker { 17// return agedataList.count 18// } else if pickerView == seibetupicker { 19// return seibetudataList.count 20// } else if pickerView == seasonpicker { 21// return seasonList.count 22// } else { 23// return PrefecturesList.count 24// } 25 26 }

とやってpickerView(_:titleForRow:forComonent:)

swift

1func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 2 if pickerView == agepicker { 3 return agedataList[row] 4 } else if pickerView == seibetuPicker { 5 return seibetudataList[row] 6 } else if pickerView == seasonPicker { 7 return seasonList[row] 8 } else { 9 return prefecturesList[row] 10 } 11 }

としてしまえば動きます(動作確認済み)。

プラスαとしてswitch文も書いてみました。pickerView(_:titleForRow:forComponent:)の方もswitch文で書いてみれば練習になるでしょう。

投稿2018/08/19 13:50

編集2018/08/20 01:58
xAxis

総合スコア1349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/19 14:48 編集

すいません、int型の方の else { prefecturesList.countにMissing return in a function expected to return 'Int'が 出てしますのですがどういうエラーなのでしょうか、あとswitch文だとどうなりますかね、、
xAxis

2018/08/20 01:56

あぁ、Xcode使わずに書いたので単なるエラーですね。return文がないだけです。あと一つ上の条件式も代入しちゃってるので修正します。ついでにswitch文だとどうなるかも片方だけ書いておきますね。
退会済みユーザー

退会済みユーザー

2018/08/20 04:56

xAxis様 いつも返答頂きありがとうございます。 問題は解決しました! switch文も試してみたいと思います。これからもよろしくお願いしまします。
xAxis

2018/08/20 05:14

問題解決してよかったです。swich文にトライして、もし分からなければ下部コメント欄にどうぞ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問