gpt4 book ai didi

ios - 在同一 View 中集成多个选择器 View 时遇到问题

转载 作者:行者123 更新时间:2023-11-29 05:31:21 25 4
gpt4 key购买 nike

我试图在一个 View 上设置两个选取器 View ,但我不想显示轮子,我只想在单击特定文本框时弹出轮子。我可以让它适用于一个 Pickerview,但是当我尝试添加第二个 Pickerview 时,pickerview 不再工作。

我尝试过使用“标签”,但由于我没有明确使用 UIPickerView!,所以我认为不能使用标签。

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{

@IBOutlet weak var cornerText: UITextField!
@IBOutlet weak var brandText: UITextField!


// PICKER VIEW CODE

let Corner = ["LF", "RF", "RR", "LR", "5th"]
let Brand = ["Brand1", "Brand2", "Brand3", "Brand4", "Brand5"]


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

func pickerView(_ cornerPickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if cornerText.isEditing{
return Corner.count
}
else if brandText.isEditing{
return Brand.count
}
else {
return 0
}
}

func pickerView(_ cornerPickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if cornerText.isEditing{
return Corner[row]
}
else if brandText.isEditing{
return Brand[row]
}
else {
return nil
}
}
var cornerIndex: Int!
var brandIndex: Int!

func pickerView(_ cornerPickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if cornerText.isEditing{
cornerText.text = Corner[row]
cornerIndex = row
}
else if brandText.isEditing{
brandText.text = Brand[row]
brandIndex = row
}
else{
return
}
}

func createPickerView(){


if cornerText.isEditing{
let cornerPickerView = UIPickerView()
cornerPickerView.delegate = self
cornerText.inputView = cornerPickerView
}
else if brandText.isEditing{
let cornerPickerView = UIPickerView()
cornerPickerView.delegate = self
brandText.inputView = cornerPickerView
}
else {
return
}
}

func dismissPickerView(){
let toolBar = UIToolbar()
toolBar.sizeToFit()

let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.dismissKeyboard))
toolBar.setItems([doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
if cornerText.isSelected{
cornerText.inputAccessoryView = toolBar
}
else {
brandText.inputAccessoryView = toolBar
}
}

@objc func dismissKeyboard(){
view.endEditing(true)
// Put anything that must pop up based on the corner here

我希望两个pickerview都能工作,但现在两个pickerview都不能显示。

最佳答案

您的选择器 View 数据源/委托(delegate)代码看起来不错。问题似乎在于如何为每个文本字段创建和设置输入 View 和输入附件 View 。

您只需要一个选择器 View 和一个选项卡栏。将每个值分配给两个文本字段。

删除您的 dismissPickerView 方法并更新您的 createPickerView 方法,如下所示:

func createPickerView() {
let pickerView = UIPickerView()
pickerView.delegate = self
pickerView.dataSource = self

cornerText.inputView = pickerView
brandText.inputView = pickerView

let toolBar = UIToolbar()
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.dismissKeyboard))
toolBar.setItems([doneButton], animated: false)

cornerText.inputAccessoryView = toolBar
brandText.inputAccessoryView = toolBar
}

由于两个文本字段共享相同的选取器 View ,因此每次文本字段开始编辑时,您都需要重新加载选取器 View 。实现 textFieldDidBeginEditing 委托(delegate)方法,访问选取器 View 并重新加载它。

关于ios - 在同一 View 中集成多个选择器 View 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517222/

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