質問編集履歴

2 タグ・文章

moe_1023

moe_1023 score 11

2018/05/02 18:07  投稿

[Swift][Xcode]Pickerをボタンから起動させる方法
### 前提・実現したいこと
こんにちは。Swiftでアプリケーションを作成しています。
画像上のボタンを押すと、下からピッカーが出てきて、ピッカーを選択すると、ラベルに対して選択した文字列を表示させる機能を実装したいです。
しかし、ボタンからピッカーを出す方法がわかりません。
ピッカーはテキストフィールドとしか連携できないのでしょうか?
以下は参考にした記事です。
こちらの回答をそのまま試したところ、テキストフィールドからの起動は実装できました。
記事;https://teratail.com/questions/53556
単純に上記記事のコードのテキストフィールとボタンとを置換しようと思ったのですが、
textField.inputView = vi
textField.inputAccessoryView = toolBar
の部分をどうしていいのかがわかりません。
一応以下のように変更して見たのですが動作してくれません…
### 該当のソースコード
```Swift
func PickerPush(){
pickerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: pickerView.bounds.size.height)
// Connect data:
pickerView.delegate = self
pickerView.dataSource = self
let vi = UIView(frame: pickerView.bounds)
vi.backgroundColor = UIColor.white
FrontView.addSubview(pickerView)
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor.black
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(StateViewController.donePressed))
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(StateViewController.cancelPressed))
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
toolBar.sizeToFit()
vi.addSubview(toolBar)
print("push")
}
@IBAction func HeadButton(_ sender: Any) {
PickerPush()
}
```
見当違いのことを書いているかと思います。大変申し訳ありません。
ご存知の方がおられれば、ボタンを押した時にピッカーがしたから出る方法を教えていただけないでしょうか。
よろしくお願いします。
  • Swift

    14561 questions

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

  • Xcode

    8435 questions

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

  • button

    327 questions

    HTMLで用いる<button>タグです。

1 テンプレートに書きました。

moe_1023

moe_1023 score 11

2018/05/01 15:43  投稿

[Swift][Xcode]Pickerをボタンから起動させる方法
### 前提・実現したいこと  
こんにちは。Swiftでアプリケーションを作成しています。
画像上のボタンを押すと、下からピッカーが出てきて、ピッカーを選択すると、ラベルに対して選択した文字列を表示させる機能を実装したいです。
しかし、ボタンからピッカーを出す方法がわかりません。
ピッカーはテキストフィールドとしか連携できないのでしょうか?
以下は参考にした記事です。
こちらの回答をそのまま試したところ、テキストフィールドからの起動は実装できました。
記事;https://teratail.com/questions/53556
単純に上記記事のコードのテキストフィールとボタンとを置換しようと思ったのですが、
       textField.inputView = vi
       textField.inputAccessoryView = toolBar
の部分をどうしていいのかがわかりません。
一応以下のように変更して見たのですが動作してくれません…
 
 
### 該当のソースコード  
 
```Swift  
 
   func PickerPush(){
       pickerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: pickerView.bounds.size.height)
       // Connect data:
       pickerView.delegate  = self
       pickerView.dataSource = self
       let vi = UIView(frame: pickerView.bounds)
       vi.backgroundColor = UIColor.white
       FrontView.addSubview(pickerView)
       let toolBar = UIToolbar()
       toolBar.barStyle = UIBarStyle.default
       toolBar.isTranslucent = true
       toolBar.tintColor = UIColor.black
       let doneButton  = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(StateViewController.donePressed))
       let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(StateViewController.cancelPressed))
       let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
       toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
       toolBar.isUserInteractionEnabled = true
       toolBar.sizeToFit()
       vi.addSubview(toolBar)
       print("push")
   }
   @IBAction func HeadButton(_ sender: Any) {
       PickerPush()
   }
```  
見当違いのことを書いているかと思います。大変申し訳ありません。
ご存知の方がおられれば、ボタンを押した時にピッカーがしたから出る方法を教えていただけないでしょうか。
よろしくお願いします。
よろしくお願いします。
  • Swift

    14561 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る