我正在尝试"返工"我的选择器视图如何在我的应用中显示和隐藏。我的一些问题可能是我让它以一种方式工作,现在我试图以不同的方式做,我不明白其中的区别。随着说:
我创建了一个测试项目,将此限制为当前问题。我有UIPickerView
,Toolbar
有两个Bar Button Items
,一个文本字段,其中将输入选择器视图值和文本标签。我通过隐藏选择器和工具栏开始ViewDidLoad
。然后,当用户点按textField
UIPickerView
并显示Toolbar
时。用户选择该值然后点击完成以隐藏选择器和工具栏。
以下是我的问题。当应用加载时,一切看起来都很好。然后,当我点击文本字段时,会出现灰色选择器,但没有数据。但是工具栏没有出现。我需要在主故事板中显示的选择器(没有灰色背景)并包含来自dataArray
数组的数据。我也需要工具栏出现。非常感谢您的帮助。代码如下。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet var myPickerView: UIPickerView!
@IBOutlet var pickerViewToolbar: UIToolbar!
@IBOutlet var textField: UITextField!
var dataArray = ["one", "two", "three", "four", "five"]
override func viewDidLoad() {
super.viewDidLoad()
hidePickerParts()
textField.inputView = myPickerView
self.myPickerView.removeFromSuperview()
}
func hidePickerParts() {
self.myPickerView.hidden = true
self.pickerViewToolbar.hidden = true
}
func showPickerParts() {
self.myPickerView.hidden = false
self.pickerViewToolbar.hidden = false
}
@IBAction func cancelPickerView(sender: AnyObject) {
self.view.endEditing(true)
hidePickerParts()
}
@IBAction func pickerViewDone(sender: AnyObject) {
self.view.endEditing(true)
hidePickerParts()
}
func textFieldDidBeginEditing(textField: UITextField) {
showPickerParts()
myPickerView.selectRow(0, inComponent: 0, animated: false)
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.dataArray.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return self.dataArray[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField.text = dataArray[row]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}