Ios 根据点击的字段将数据加载到UIPIckerView

Ios 根据点击的字段将数据加载到UIPIckerView,ios,uidatepicker,Ios,Uidatepicker,我试图找到一种方法,当用户点击视图中的不同字段时,将数据加载到我的PickerView中。我很早就让它工作了,当我完成视图的其他部分时,它不再工作了。数据现在是硬编码的,以获得项目的功能,然后数据将从主服务器上生成的XML文件中提取,该文件包含用户特定的数据 现在我只是想让选择器为一个字段(enterDispTo)工作,但最终代码需要为视图中的三个非日期字段工作 这是我目前拥有的代码。抱歉,时间太长了,但我不想遗漏一些可能是问题所在的内容。这对我来说很新鲜 import UIKit 类分配屏幕

我试图找到一种方法,当用户点击视图中的不同字段时,将数据加载到我的PickerView中。我很早就让它工作了,当我完成视图的其他部分时,它不再工作了。数据现在是硬编码的,以获得项目的功能,然后数据将从主服务器上生成的XML文件中提取,该文件包含用户特定的数据

现在我只是想让选择器为一个字段(enterDispTo)工作,但最终代码需要为视图中的三个非日期字段工作

这是我目前拥有的代码。抱歉,时间太长了,但我不想遗漏一些可能是问题所在的内容。这对我来说很新鲜

import UIKit
类分配屏幕1ViewController:UIViewController、UIPickerViewDeleteGate{

// keep your outlets at the top
@IBOutlet var myDatePicker: UIDatePicker!
@IBOutlet var userLabel: UILabel!
@IBOutlet var teamLabel: UILabel!
@IBOutlet var enterDate: UITextField!
@IBOutlet var enterSeason: UITextField!
@IBOutlet var enterSport: UITextField!
@IBOutlet var enterDispTo: UITextField!

// put variables and constants here
let today = NSDate()
var season = traSeason
var sport = traSport
var dispensedToSelector = dispensedTo
var activeField = []
var datePickerView = UIDatePicker()
var fieldDataPickerView = UIPickerView()

override func viewDidLoad() {
    super.viewDidLoad()

    userLabel.text = userName
    teamLabel.text = teamName

    // initialize the inputView of the transaction date field to a datePickerView. This will allow the date picker to appear when the field is tapped
    enterDate.inputView = datePickerView

    // this limits the date picker to date only
    datePickerView.datePickerMode = UIDatePickerMode.Date
    datePickerView.date = NSDate()
    enterDate.text = NSDate().formatted
    datePickerView.addTarget(self, action: "dateChangedAction", forControlEvents: UIControlEvents.ValueChanged)

    //initailize the inputView of the season field to the PickerView. This will allow the picker to appear when the field is tapped
    enterSeason.inputView = fieldDataPickerView

    if season.count > 0 {
        enterSeason.text = season[0] as! String //value in [] will be a var that sets default season
    }

    //initailize the inputView of the season field to the PickerView. This will allow the picker to appear when the field is tapped
    enterSport.inputView = fieldDataPickerView

    if sport.count == 1 {

        enterSport.text = sport[0] as String //need to convert to a string
        enterSport.enabled = false //do not allow editing

    } else {
        //do nothing
    }

    //initailize the inputView of the enterDispTo field to the PickerView. This will allow the picker to appear when the field is tapped
    enterDispTo.inputView = fieldDataPickerView

    enterDispTo.text = dispensedToSelector[0]

}

func dateChangedAction() {
    datePickerView.maximumDate = NSDate()
    enterDate.text = datePickerView.date.formatted
}

//func fieldChangedAction() {
   // enterDispTo.text = self.itemSelected
//}

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

//load data into PickerView and return the value selected
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
    }
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return self.activeField.count
    }
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return self.activeField[row] as! String
    }
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    var itemSelected = self.activeField[row] as! String
    }

//function to hide keyboard when return key is tapped
func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

//funtion to hide keyboard when screen is tapped
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    self.view.endEditing(true)
}

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

@IBAction func seasonTapped(sender: AnyObject) {
    //code for what to do when season field is tapped
    activeField = season
}


@IBAction func sportTapped(sender: AnyObject) {
    //code for what to do when sport field is tapped
    activeField = sport
}


@IBAction func dispToTapped(sender: AnyObject) {
    //code for what to do when dispTo is tapped
    activeField = dispensedToSelector
    //fieldDataPickerView.addTarget(self, action: "fieldChangedAction", forControlEvents: UIControlEvents.ValueChanged)
}
//让您的门店保持在顶部
@IBVAR myDatePicker:UIDatePicker!
@IBOutlet var userLabel:UILabel!
@IBVAR团队标签:UILabel!
@IBOutlet var enterDate:UITextField!
@IbExtfield:UITextField!
@IbExtField!
@IBOutlet var entredispto:UITextField!
//把变量和常量放在这里
let today=NSDate()
var季节=Traseash
var sport=traSport
var dispensedToSelector=dispensedTo
var activeField=[]
var datePickerView=UIDatePicker()
var fieldDataPickerView=UIPickerView()
重写func viewDidLoad(){
super.viewDidLoad()
userLabel.text=用户名
teamLabel.text=团队名称
//将事务日期字段的inputView初始化为datePickerView。这将允许在点击该字段时显示日期选择器
enterDate.inputView=datePickerView
//这将日期选择器限制为仅日期
datePickerView.datePickerMode=UIDatePickerMode.Date
datePickerView.date=NSDate()
enterDate.text=NSDate()。已格式化
datePickerView.addTarget(自身,操作:“dateChangedAction”,forControlEvents:UIControlEvents.ValueChanged)
//将季节字段的inputView初始化为PickerView。这将允许在点击字段时显示选择器
enterSeason.inputView=fieldDataPickerView
如果season.count>0{
[]中的enterSeason.text=season[0]as!String//值将是设置默认季节的变量
}
//将季节字段的inputView初始化为PickerView。这将允许在点击字段时显示选择器
enterSport.inputView=fieldDataPickerView
如果sport.count==1{
enterSport.text=sport[0]作为字符串//需要转换为字符串
enterport.enabled=false//不允许编辑
}否则{
//无所事事
}
//将enterDispTo字段的inputView初始化为PickerView。这将允许在点击该字段时显示选择器
enterDispTo.inputView=fieldDataPickerView
enterDispTo.text=分发到选择器[0]
}
func dateChangedAction(){
datePickerView.maximumDate=NSDate()
enterDate.text=datePickerView.date.formatted
}
//func fieldChangedAction(){
//enteredispto.text=self.itemSelected
//}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
//将数据加载到PickerView并返回所选的值
func numberOfComponentsInPickerView(pickerView:UIPickerView)->Int{
返回1
}
func pickerView(pickerView:UIPickerView,numberOfRowsInComponent:Int)->Int{
返回self.activeField.count
}
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->字符串{
将self.activeField[row]返回为!字符串
}
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,不完整组件:Int){
var itemSelected=self.activeField[row]作为!字符串
}
//点击返回键时隐藏键盘的功能
func textField应返回(textField:UITextField)->Bool{
textField.resignFirstResponder()辞职
返回真值
}
//点击屏幕时隐藏键盘的功能
覆盖func touchesBegined(触摸:设置,withEvent事件:UIEvent){
self.view.endEditing(true)
}
/*
//标记:-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
覆盖函数prepareforsgue(segue:UIStoryboardSegue,sender:AnyObject?){
//使用segue.destinationViewController获取新的视图控制器。
//将选定对象传递给新的视图控制器。
}
*/
@iAction func(发送方:任意对象){
//点击季节字段时的操作代码
活动场=季节
}
@iAction func(发送方:AnyObject){
//点击运动场时的操作代码
运动场
}
@iAction func dispToTapped(发送方:AnyObject){
//点击dispTo时要执行的操作代码
activeField=分配的选择器
//fieldDataPickerView.addTarget(自身,操作:“fieldChangedAction”,forControlEvents:UIControlEvents.ValueChanged)
}
}
扩展日期{
var格式:字符串{
设df=NSDateFormatter()
df.dateFormat=“dd-MMM-yyyy”
df.locale=NSLocale(localeIdentifier:“en_us_POSIX”)
返回df.stringFromDate(self)
}

}

您有一个调试器。调试!找出哪里出了问题。@matt我很乐意使用调试器。下一个问题。我已经找到了调试导航器,现在比以往任何时候都更加困惑。关于如何使用调试器,是否有一些参考资料?请记住,这是我有史以来的第一个项目,我甚至不知道有调试器。我的书可能会帮助你。您要做的是在方法开始时的断点处暂停,然后逐步执行,观察变量的值是否有意义@马特,谢谢你。我要看看你的书。实际上,我已经将其添加到书签中,但我没有看到任何特定于调试的内容。“我可能错过了。”马特,我看了看