- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望标题有意义,但我想做的是将字段值设置为从我的 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):
附言- 将 activeField
重命名为 activeDataArray
或更合适的名称
编辑 2:正如您所提到的,我在下面提到的第二种方法不适合您,因为这些字段太多了,我仍然将其保留为答案的一部分,因为它可能会帮助其他人
但是您要实现的目标非常简单,而且方法过于复杂/怪异。所以这里有另一种方法可以实现整个事情..
最简单(但仍然可能不是最好)的方法是为每个字段设置两个 UIPickerView
实例。您可以直接在 if else block 中检查 pickerView == seasonPickerView
或 pickerView == sportPickerView
并进行条件编程,您不需要 activeField
变量..
关于ios - 如何从另一个变量构建一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958849/
我是一名优秀的程序员,十分优秀!