Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. import UIKit
  2.  
  3. class PickerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource,UITextFieldDelegate{
  4.  
  5. private var myPickerBaseView:UIView!
  6. private var myPicker: UIPickerView!
  7. private var myTextField = UITextField()
  8. private var pickerValues: [Int] = []
  9.  
  10. override func viewDidLoad() {
  11. super.viewDidLoad()
  12. self.view.backgroundColor = UIColor.white
  13. self.title = "PickerView"
  14.  
  15. myPickerBaseView = makePickerBaseView()
  16. self.view.addSubview(myPickerBaseView)
  17. }
  18.  
  19. override func didReceiveMemoryWarning() {
  20. super.didReceiveMemoryWarning()
  21. }
  22.  
  23. func makePickerBaseView() -> UIView
  24. {
  25. //配列の初期化
  26. for _ in 1..<100
  27. {
  28. pickerValues += [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
  29. }
  30.  
  31. //パーツを乗せるビュー
  32. let baseView = UIView()
  33. baseView.backgroundColor = UIColor.cyan
  34. baseView.frame = CGRect(x: 0, y: 0, width: 120, height: 50)
  35. baseView.layer.position = CGPoint(x: CGFloat(UIScreen.main.bounds.size.width)/2,
  36. y: CGFloat(UIScreen.main.bounds.size.height)/2)
  37. baseView.layer.cornerRadius = 5
  38.  
  39. //文字
  40. let ji:UILabel = UILabel()
  41. ji.frame = CGRect(x: 70,
  42. y: 1,
  43. width: CGFloat(UIScreen.main.bounds.size.width)*0.7,
  44. height: 48)
  45. ji.text = "時間"
  46. baseView.addSubview(ji)
  47.  
  48. //baseViewにテキストフィールドを乗せる
  49. var myTextField = UITextField()
  50. myTextField = makeTextField()
  51. baseView.addSubview(myTextField)
  52. myTextField.text = "1"
  53.  
  54. return baseView
  55. }
  56.  
  57. func makeTextField() -> UITextField
  58. {
  59. myTextField = UITextField(frame: CGRect(x: 0, y: 0, width:40, height: 40))
  60. myTextField.layer.position = CGPoint(x: 40, y: 25)
  61. myTextField.delegate = self
  62. myTextField.layer.cornerRadius = 5.0
  63. myTextField.layer.borderWidth = 1.5
  64. myTextField.layer.borderColor = UIColor.cyan.cgColor
  65. myTextField.font = UIFont.systemFont(ofSize: CGFloat(20))
  66. myTextField.textColor = UIColor.black
  67. myTextField.backgroundColor = UIColor.white
  68. myTextField.tintColor = UIColor.clear //キャレット(カーソル)を消す。
  69. myTextField.inputView = makePicker() //ここでピッカービューをセットする。
  70. myTextField.text = "1"
  71. myTextField.textAlignment = .center
  72. return myTextField
  73. }
  74.  
  75. //入力領域を引っ込める
  76. override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  77. myTextField.endEditing(true)
  78. }
  79.  
  80. //ピッカービューの作成
  81. func makePicker() -> UIPickerView
  82. {
  83. myPicker = UIPickerView()
  84. myPicker.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 200.0)
  85. myPicker.layer.position = CGPoint(x:0, y:0)
  86. myPicker.backgroundColor = UIColor.cyan
  87. myPicker.delegate = self
  88. myPicker.dataSource = self
  89. //初期選択位置の設定
  90. myPicker.selectRow(24*50, inComponent: 0, animated: true)
  91. return myPicker
  92. }
  93.  
  94.  
  95. func numberOfComponents(in pickerView: UIPickerView) -> Int {
  96. return 1
  97. }
  98.  
  99. //pickerに表示する行数を返すデータソースメソッド
  100. func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
  101. return pickerValues.count
  102. }
  103.  
  104. //pickerに表示する値を返すデリゲートメソッド
  105. func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
  106. return String(describing: pickerValues[row])
  107. }
  108.  
  109. //pickerが選択時デリゲートメソッド
  110. func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
  111. print("row: \(row) , value: \(pickerValues[row])")
  112. //テキストビューの値変更
  113. myTextField.text = "\(pickerValues[row])"
  114. }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement