我试图使用UIButton删除pickerView的元素,但在连续删除了3个元素后,我得到了错误消息(索引超出范围)。
对不起,我的英语很差,我还年轻,还住在德国。
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var textFiled: UITextField!
@IBOutlet weak var pickerView: UIPickerView!
var Array = ["Blue", "Green", "Red", "White", "Grey"]
var indexOfPicker = Int()
override func viewDidLoad() {
super.viewDidLoad()
pickerView.dataSource = self
pickerView.delegate = self
}
@IBAction func minusButton(_ sender: UIButton) {
if Array.count != 0 {
Array.remove(at: indexOfPicker)
pickerView.reloadAllComponents()
}
}
@IBAction func plusButton(_ sender: UIButton) {
if textFiled.text != "" {
Array.append(textFiled.text!)
pickerView.reloadAllComponents()
}
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return Array.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return Array[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
indexOfPicker = row
}
}
谢谢你的帮助!
发布于 2018-08-06 05:09:40
这
if Array.count != 0 {
并不意味着你可以删除这个索引indexOfPicker
,我认为你需要这个
if indexOfPicker < Array.count {
因为我猜您只能从pickerView中选择一次(当计数为5时,这意味着indexOfPicker
在0...4 ),然后点击minusButton 3次
https://stackoverflow.com/questions/51698200
复制相似问题