我正在使用swift制作GPA计算器,但我遇到了一些问题 . 我创建了一个包含所有字母等级(A到F)的选择器视图 . 我已经放了7个文本字段(每个课程一个) . 我希望用户点按文本字段并显示选择器视图,所选的成绩将显示在文本字段中 . 我已经设法为第一个文本字段做了这个,但我不知道如何编写允许我为每个文本字段选择等级的代码 . 我尝试了不同的方法,但我总是最终改变第一个文本字段 .
任何帮助表示赞赏:-)
这是我的代码(gradeOne是课程1的文本字段,课程2的gradeTwo等):
导入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)
}
}
3 回答
您应该将gradePickerView设置为所有文本字段的inputView
然后在
pickerView:didSelectRow:
方法中,您需要将文本设置为当时的活动文本字段 . 我建议使用UITextFieldDelegate设置活动文本字段使用UITextField的委托将所有输入视图设置为pickerView . 确保为所有文本字段设置委托
我想你想点击7个textfiel . 每次pickerView都会显示 . 你在pickerView中挑选一个单元格,并且你只需点击你的文字显示你的选择?如果这是真的 . 你应该做这个步骤:1:为每个textFiel添加标签:yourtextFiel.view.tag = 0(或1,2,3,4,...)2:当show pickerView:添加pickerView.tag = yourtextFiel.view .tag 3:在fucion pickerView didSelectRow:获取你的textFiel的标签将显示你的选择:let mytag = pickerView.tag . 用“mytag”找到你的textFiel并更改你的文字Googluck