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

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

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

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2501閲覧

コードを書いて作ったPickerViewでTag設定するにはどのように記述すれば良いのでしょうか。

M.minoru

総合スコア19

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/07/20 07:49

編集2016/07/21 05:12

Storyboardで一つのViewに複数のTextFieldを配置しそれぞれのTextFieldをクリック(タップ)すると別々の内容が表示されるPickerViewが表示されるようにしたいです。
クリックするとPickerViewが表示されそこで選んだものがTextFieldに表示されるまでは作ることができました。
しかし別のTextFieldで同様のことをしようとしても一つ目に作ったものと同じ動きをしてしまします。

以前Storyboard上に複数のPickerViewを配置して別々のものを表示するときにTagを使いました。
そこでStoryboardにPickerViewを貼り付けた時にプロパティで設定できるTagを、
コードを書いて作ったPickerViewで設定するにはどのように記述すれば良いのでしょうか。

#####ソースコード

import UIKit class InputKotsu: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate { let kubunList = ["交通費(通勤)", "交通費", "宿泊","日当"] let youkenList = ["定期", "営業", "その他"] let koutsuuList = ["電車","バス", "タクシー", "飛行機","船舶"] let oufukuList = ["往復", "片道"] @IBOutlet weak var kubun: SubPicker! @IBOutlet weak var koutsuusyudan: SubPicker! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. kubun.selectorPicker.delegate = self kubun.selectorPicker.dataSource = self koutsuusyudan.selectorPicker.delegate = self koutsuusyudan.selectorPicker.dataSource = self kubun.tag = 0 koutsuusyudan.tag = 1 } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // 項目の数 func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 1 } // 要素数 func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { if pickerView.tag == 1{ return koutsuuList.count } return self.kubunList.count } //要素を表す文字列 func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if pickerView.tag == 1{ return koutsuuList[row] } return self.kubunList[row] } //テキストフィールドに表示 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if pickerView.tag == 1{ koutsuusyudan.text = self.koutsuuList[row] } else{ kubun.text = self.kubunList[row] } } func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 50 } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

swift

1let picketView = UIPickerView() 2picketView.tag = 1

投稿2016/07/20 08:12

fuzzball

総合スコア16731

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

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

M.minoru

2016/07/21 02:48 編集

回答ありがとうございます 続けて質問なのですが回答にありましたコードの記述する位置がわかりません。エラーの出ない位置に置き試して動くか試したのですが、最初の質問時と動作が全く同じになってしまします。 テキストフィールドをクリックした際に画面の下からpickerがでてくるコードはSubPickerというクラスにあります
fuzzball

2016/07/21 01:08

viewDidLoadの中に書いて下さい。 あと、コードは質問内に書いて下さい。ここでは見づらいです。
fuzzball

2016/07/21 02:23

私の回答をそのままコピーしちゃダメですよ。 kubunとkoutsuusyudanの.tagに設定して下さい。
M.minoru

2016/07/21 02:32

コメントを書いている間に先に返事をしていただきありがとうございます。 設定方法は黄色のエラーがついて実行は出来るのですがやはりうまくいかないです let picketView = UIPickerView() kubun.tag = 1 ↑これではダメなんですか
fuzzball

2016/07/21 02:36

とりあえず、「let picketView = UIPickerView()」は必要ないです。 「kubun.tag = 1」自体は問題ありませんが、何がどうダメなのか書いて下さい。 質問内のコードは最新のものに差し替えて下さい。 あと、コメント内のコードは邪魔なので削除して下さい。
M.minoru

2016/07/21 04:02

kubunにtag = 0 koutsuusyudanにtag = 1を設定して実行してみました。 実行してみるとkubun、koutsuusyudanのどちらにもtagが1だった場合の結果が表示されてしまいました。 また質問の書き方についてまでアドバイスをありがとうございます
fuzzball

2016/07/21 04:08

判定文が「koutsuusyudan.tag == 1」になっていますが、これでは常にtrueになってしまいます。numberOfRowsInComponentなどの関数には対象となるUIPickerViewがpickerViewで渡されますので、「pickerView.tag == 1」にしないといけません。(この部分に関しては修正前のコードでOKということです)
M.minoru

2016/07/21 05:15

判別文を pickerView.tag == 1 にしてみました。 しかし実行してみるとどちらとも tag == 1 の文に入っていないようでkubunの方の内容が表示されました。 pickerView.tagの値が0または1にうまく設定できていないのでしょうか?
fuzzball

2016/07/21 05:30 編集

SubPickerはUIPickerViewを継承していると思い込んでました。 kubun.tag = 0 koutsuusyudan.tag = 1 ではなく、 kubun.selectorPicker.tag = 0 koutsuusyudan.selectorPicker.tag = 1 ですね。
M.minoru

2016/07/21 05:53

ありがとうございます。別々のpickerとして動かすことができました。 同様にして新しいpickerも追加してみましたがそちらも動かせました。 何度も返事をいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問