【发布时间】:2016-07-12 02:33:20
【问题描述】:
我正在使用 swift 制作 GPA 计算器,但遇到了一些问题。我创建了一个包含所有字母等级(A 到 F)的选择器视图。我已经放置了 7 个文本字段(每门课程一个)。我希望用户点击一个文本字段并且应该出现选择器视图,并且选择的等级将出现在文本字段中。我已经设法为第一个文本字段做到这一点,但我不知道如何编写允许我为每个文本字段选择等级的代码。我尝试了不同的方法,但我总是只更改第一个文本字段。
任何帮助表示赞赏:-)
这是我的代码(gradeOne 是课程 1 的文本字段,gradeTwo 是课程 2 等的文本字段):
导入 UIKit
类 GPA:UIViewController、UIPickerViewDelegate、UIPickerViewDataSource {
@IBOutlet var gradeOne: UITextField!
@IBOutlet var gradeTwo: UITextField!
//Grades array
var grades = ["A+/A (85-100)", "A- (80-84)", "B+ (77-79)", "B (73-76)", "B- (70-72)", "C+ (67-69)", "C (63-66)", "C- (60-62)", "D+ (57-59)", "D (53-56)", "D- (50-52)", "F (0-49)"]
//Grade 1 Picker
func numberOfComponentsInPickerView(gradePickerView: UIPickerView) -> Int {
return 1
}
func pickerView(gradePickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return grades.count
}
func pickerView(gradePickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return grades[row]
}
func pickerView(gradePickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
gradeOne.text = grades[row]
}
//Make keyboard disappear
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let gradePickerView = UIPickerView()
gradePickerView.delegate = self
gradeOne.inputView = gradePickerView
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
}
【问题讨论】: