如何在选择器视图中填充 "ArrayYear"?
How to populate "ArrayYear" in picker view?
import UIKit
class SecondViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
//UI TextFields
@IBOutlet weak var ChassisText: UITextField!
@IBOutlet weak var YearFromText: UITextField!
@IBOutlet weak var YearToText: UITextField!
@IBOutlet weak var MakeText: UITextField!
@IBOutlet weak var ModelText: UITextField!
//Used Variables
var YearFrom:String = "0"
var YearTo:String = "2020"
var ChassisNumber:String = ""
var ArrayYear:[String] = [""]
var ArrayMake = [String]()
var ArrayModel = [String]()
var i:Int = 0
var holdSelect = 0
//UIPickerView
var pickerselection: UIPickerView!
//Boolean Variables
var checkYearFrom: Bool = false
var checkYearTo: Bool = false
var checkMake: Bool = false
var checkModel: Bool = false
//Picker Actions
func DonePicker()
{
if checkYearFrom {
YearFromText.text = "\(ArrayYear[holdSelect])"
YearFrom = "\(ArrayYear[holdSelect])"
YearFromText.resignFirstResponder()
checkYearFrom = false
}
else if checkYearTo {
YearToText.text = "\(ArrayYear[holdSelect])"
YearTo = "\(ArrayYear[holdSelect])"
YearToText.resignFirstResponder()
checkYearTo = false
}
}
func CancelPicker()
{
YearFromText.resignFirstResponder()
YearToText.resignFirstResponder()
ModelText.resignFirstResponder()
MakeText.resignFirstResponder()
}
//Picker View Functions
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
if checkYearFrom || checkYearTo {
return ArrayYear[row]
}
else
{
return ArrayYear[row]
}
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if checkYearFrom || checkYearTo {
return ArrayYear.count
}
else
{
return ArrayYear.count
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
holdSelect = row
pickerView.reloadAllComponents()
}
}
我有上面的全部代码以编程方式创建选择器视图以及取消和完成按钮项。
这行代码是我创建年份数组的地方:
var YearFrom:String = "0"
var YearTo:String = "2020"
var ArrayYear:[String] = [""]
var i:Int = 0
在 viewDidLoad 上,这是为年份创建 for 循环的地方:
for var index = 1980; index <= 2016; index++ {
ArrayYear.insert("\(index)", atIndex: i)
}
i = 0
//Creating Picker Programatically
pickerselection = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
pickerselection.backgroundColor = .whiteColor()
pickerselection.showsSelectionIndicator = true
pickerselection.delegate = self
pickerselection.dataSource = self
在 运行 阶段,我在 'YearFromText' 上测试选择器视图,我创建的数组未显示 (1980 - 2016)。
ArrayYear 的实现有问题吗?
我是 swift 编程新手。
如果你只想把年份放在一个数组中,那么你可以简单地这样做:
let years = (1980...2016).map { String([=10=]) }
import UIKit
class SecondViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
//UI TextFields
@IBOutlet weak var ChassisText: UITextField!
@IBOutlet weak var YearFromText: UITextField!
@IBOutlet weak var YearToText: UITextField!
@IBOutlet weak var MakeText: UITextField!
@IBOutlet weak var ModelText: UITextField!
//Used Variables
var YearFrom:String = "0"
var YearTo:String = "2020"
var ChassisNumber:String = ""
var ArrayYear:[String] = [""]
var ArrayMake = [String]()
var ArrayModel = [String]()
var i:Int = 0
var holdSelect = 0
//UIPickerView
var pickerselection: UIPickerView!
//Boolean Variables
var checkYearFrom: Bool = false
var checkYearTo: Bool = false
var checkMake: Bool = false
var checkModel: Bool = false
//Picker Actions
func DonePicker()
{
if checkYearFrom {
YearFromText.text = "\(ArrayYear[holdSelect])"
YearFrom = "\(ArrayYear[holdSelect])"
YearFromText.resignFirstResponder()
checkYearFrom = false
}
else if checkYearTo {
YearToText.text = "\(ArrayYear[holdSelect])"
YearTo = "\(ArrayYear[holdSelect])"
YearToText.resignFirstResponder()
checkYearTo = false
}
}
func CancelPicker()
{
YearFromText.resignFirstResponder()
YearToText.resignFirstResponder()
ModelText.resignFirstResponder()
MakeText.resignFirstResponder()
}
//Picker View Functions
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
if checkYearFrom || checkYearTo {
return ArrayYear[row]
}
else
{
return ArrayYear[row]
}
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if checkYearFrom || checkYearTo {
return ArrayYear.count
}
else
{
return ArrayYear.count
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
holdSelect = row
pickerView.reloadAllComponents()
}
}
我有上面的全部代码以编程方式创建选择器视图以及取消和完成按钮项。
这行代码是我创建年份数组的地方:
var YearFrom:String = "0"
var YearTo:String = "2020"
var ArrayYear:[String] = [""]
var i:Int = 0
在 viewDidLoad 上,这是为年份创建 for 循环的地方:
for var index = 1980; index <= 2016; index++ {
ArrayYear.insert("\(index)", atIndex: i)
}
i = 0
//Creating Picker Programatically
pickerselection = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
pickerselection.backgroundColor = .whiteColor()
pickerselection.showsSelectionIndicator = true
pickerselection.delegate = self
pickerselection.dataSource = self
在 运行 阶段,我在 'YearFromText' 上测试选择器视图,我创建的数组未显示 (1980 - 2016)。
ArrayYear 的实现有问题吗?
我是 swift 编程新手。
如果你只想把年份放在一个数组中,那么你可以简单地这样做:
let years = (1980...2016).map { String([=10=]) }