gpt4 book ai didi

ios - 如何从另一个变量构建一个变量

转载 作者:行者123 更新时间:2023-11-29 02:04:22 25 4
gpt4 key购买 nike

我希望标题有意义,但我想做的是将字段值设置为从我的 dataPicker 中选择的项目变量。当只有一个字段需要设置时,我已经能够完成这项工作,但我的项目将在每个 View 上有多个字段,这些字段将根据字段的字段从 dataPicker 调用数据。我希望这是清楚的。也许当你查看代码时就会发现。

我已经建立了一个测试项目来将事情仅限于这个问题。因此,我的变量告诉 View 在 dataPicker 中填充的数组是季节还是运动。将从 season/sport 数组接收数据的字段是 EnterSeason 和 EnterSport。当选择器返回季节值时,我想将其与 Enter 结合起来创建 var EnterSeason 来设置 == itemSelected。这种语言对我来说非常新,所以我正在尝试以前使用过的唯一方法将文本和变量组合成一个值。显然这是行不通的。感谢帮助。

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UIGestureRecognizerDelegate {

@IBOutlet var enterSeason: UITextField!

@IBOutlet var enterSport: UITextField!

var dataPickerView = UIPickerView()
var season = ["2013", "2014", "2015"] //multi-season
//var season = ["2015"] //single-season
var sport = ["Baeball", "Football", "Basketball", "Hokey"]
var activeField = []

override func viewDidLoad() {
super.viewDidLoad()

enterSeason.inputView = dataPickerView
dataPickerView.delegate = self
dataPickerView.dataSource = self

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return activeField.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return activeField[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
var itemSelected = activeField[row] as! String
self.enter"\activeField".text = itemSelected
}
}

最佳答案

编辑: 如何显示和隐藏选择器?您的代码仅显示变量声明和委托(delegate)方法...答案可能会有所不同。

由于您将选择器显示为文本字段的输入 View ,因此为每个文本字段设置 UITextFieldDelegate .. 并在 textFieldDidBeginEditing 中使用简单的 if else 检查哪个字段变为事件状态

func textFieldDidBeginEditing(textField: UITextField) {
if textField === enterSeason {
activeField = season
}
else if textField === enterSport {
activeField = sport
}
}

然后在选择器选择器中,根据当前 activeField 对象设置相关文本字段的值

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeField === season {
enterSeason.text = season[row] as! String
}
else if activeField === sport {
enterSeason.text = sport[row] as! String
}
}

在 storboard/xib 中为您的文本字段设置委托(delegate):

enter image description here

附言- 将 activeField 重命名为 activeDataArray 或更合适的名称

编辑 2:正如您所提到的,我在下面提到的第二种方法不适合您,因为这些字段太多了,我仍然将其保留为答案的一部分,因为它可能会帮助其他人

但是您要实现的目标非常简单,而且方法过于复杂/怪异。所以这里有另一种方法可以实现整个事情..

最简单(但仍然可能不是最好)的方法是为每个字段设置两个 UIPickerView 实例。您可以直接在 if else block 中检查 pickerView == seasonPickerViewpickerView == sportPickerView 并进行条件编程,您不需要 activeField变量..

关于ios - 如何从另一个变量构建一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958849/

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