gpt4 book ai didi

ios - fatal error : Index out of range in swift while taking options from uipicker

转载 作者:行者123 更新时间:2023-11-28 06:28:20 28 4
gpt4 key购买 nike

我有 3 个文本字段,可以选择性别、国家、州。我正在使用 UIPickerUIPicker 获取输入值。但是现在,当我按性别 UITextField 打开 UIPickerenter code here 时,UIPickerenter code here 显示没有数据。但是我为国家、州使用的是相同的 UIPicker。那个时候它用 UIPicker 显示两个国家的数据,状态文本字段。谁能帮帮我。如何解决这个问题。

错误:

fatal error: Index out of range

如果我在 uipicker 选项中按下,只会崩溃。

我的代码:

我在这个类文件中遇到了崩溃:

import Foundation

import SwiftCountryPicker

class DataPicker: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {

var dataPicker: UIPickerView!
var inputText:UITextField!
var parent:UIViewController!
var pickerData: [String]!
var feetStr = String()
var inchStr = String()

private var _selectedValue: String!

var selectedvalue: String {
return _selectedValue ?? String()
}

func showPicker(parent:UIViewController,inputText:UITextField, data: [String], selectedValueIndex: Int){

self.inputText = inputText
self.parent = parent
pickerData = data

if dataPicker == nil {
dataPicker = UIPickerView(frame: CGRectMake(0,0,parent.view.frame.size.width, 216))
dataPicker.backgroundColor = UIColor.whiteColor()
dataPicker.dataSource = self
dataPicker.delegate = self
dataPicker.selectRow(selectedValueIndex, inComponent: 0, animated: true)
_selectedValue = pickerData.count > 0 ? pickerData[selectedValueIndex] : ""
}
inputText.inputView = dataPicker

// ToolBar
let toolBar = UIToolbar()
toolBar.barStyle = .Default
toolBar.translucent = true
toolBar.tintColor = UIColor(hex: "B12420")
toolBar.backgroundColor = UIColor.whiteColor()
toolBar.sizeToFit()

// Adding Button ToolBar
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: #selector(DataPicker.doneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: #selector(DataPicker.cancelClick))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
inputText.inputAccessoryView = toolBar

}

func doneClick() {
inputText.text = _selectedValue
inputText.resignFirstResponder()
}
func cancelClick() {
inputText.resignFirstResponder()
}




func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

_selectedValue = pickerData[row]
}

}

在这一行中:

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        _selectedValue = pickerData[row]
}

我的文本字段委托(delegate)用于按下 texfield:

extension UserInfoViewController:UITextFieldDelegate{

func textFieldDidBeginEditing(textField: UITextField) {

selectedText = textField

else if textField == genderss {
ctDataPicker = DataPicker()
let indexPos = genders.indexOf(genderss.text!) ?? 0
ctDataPicker.showPicker(self, inputText: textField, data: genders,selectedValueIndex: indexPos)
}

}
}

最佳答案

UIPickerViewDataSource 方法 didSelectRow 在 Swift 4 中发生了变化:

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
TextField.text = myPickerData[row]
}

尝试将崩溃 _selectedValue 的行更改为文本字段示例

TextField.text = myPickerData[行]

检查 Apple DocumentationUIPickerView 上。

关于ios - fatal error : Index out of range in swift while taking options from uipicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114422/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com