ios - 如何在选择器 View 中填充 "ArrayYear"?

标签 ios arrays swift uipickerview

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()
}

我有上面的全部代码以编程方式创建选择器 View ,还有取消和完成的 buttonItem。

这行代码是我创建年份数组的地方:

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”上的选择器 View 的运行阶段,我创建的数组未显示 (1980 - 2016)。

ArrayYear的实现有问题吗

我是 swift 编程的新手。

最佳答案

如果你只想要数组中的年份,那么你可以简单地这样做:

let years = (1980...2016).map { String($0) }

关于ios - 如何在选择器 View 中填充 "ArrayYear"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35809294/

相关文章:

ios - 带有倾斜设备的 CLLocationManager 标题

ios - 如何从字符串中获取 NSDate 而不将其转换为 UTC

arrays - 处理中的 SplitTokens 问题

mysql - 我如何从 Laravel 中的表中获取本周的计数数据

swift - 如何检测 WKWebView 中的哈希变化?

Swift - 在 KVO 中使用两个不同的 OperationQueues 时应用程序崩溃

ios - 如何用倾斜的渐变填充 CAShapeLayer

ios - iOS 应用程序图标上的新消息角标(Badge)

perl - 如何在Perl中初始化2D数组?

ios - 对 SKShapeNode 施加脉冲