首页 文章

如何从tableview中的datepicker加载文本框中的值

提问于
浏览
0

我有一个带有2个textbox.text1的tableview加载viewdidload函数的数据 . 对于text2,输入是日期 . 我正在使用tableview didselectrow方法来显示datepicker . 但是当我从datepicker中选择日期时,它在控制台中打印但未添加到文本框中 .

`override func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){

selectedIndex = indexPath.row
    let screenSize: CGRect = UIScreen.mainScreen().bounds
    datePickerContainer.frame = CGRectMake(20, 200, 290, 200.0)
    datePickerContainer.backgroundColor = UIColor.whiteColor()
    datePickerContainer.layer.borderWidth = 2.0
    datePickerContainer.layer.borderColor = UIColor.lightGrayColor().CGColor
    var pickerSize : CGSize = datePicker.sizeThatFits(CGSizeZero)
    datePicker.frame = CGRectMake(0.0, 20, pickerSize.width, 160)

    //datePicker.setDate(NSDate(), animated: true)
    //datePicker.maximumDate = NSDate()
    datePicker.datePickerMode = .Date

    datePicker.addTarget(self, action: "dateChangedInDate:", forControlEvents: UIControlEvents.ValueChanged)
    datePickerContainer.addSubview(datePicker)

    var doneButton = UIButton()
    doneButton.setTitle("Done", forState: UIControlState.Normal)
    doneButton.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
    doneButton.addTarget(self, action: Selector("dismissPicker:"), forControlEvents: UIControlEvents.TouchUpInside)
    doneButton.frame    = CGRectMake(130.0, 160, 70.0, 37.0)

    datePickerContainer.addSubview(doneButton)

    self.view.addSubview(datePickerContainer)

}

func dateChangedInDate(sender:UIDatePicker){

    dateFormatter.dateStyle = .ShortStyle
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let selectedDate = dateFormatter.stringFromDate(datePicker.date)
    firstIndex = NSIndexPath(forRow: selectedIndex, inSection: 0)

    let cell = tableView.cellForRowAtIndexPath(firstIndex) as! mytableviewcell
    cell.dateText.text = dateFormatter.stringFromDate(datePicker.date)

   // print(selectedDate)


}

`任何帮助表示赞赏....

2 回答

  • 0

    您应该尝试对 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 方法中的单元格进行所有更新 . 使它成为您的标签的 text 绑定到 DatePicker 值 . 然后,在 dataChangedWithDate() 方法内,使用 table.reloadRowsAtIndexPath() 触发相关行的表更新 . 请注意,我假设 selectedIndex 是控制器的实例变量,因此您可以在 dateChangedWithDate() 方法内访问它 .

    tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // Dequeue the cell, perform all of your other tasks for laying out the cell
        // {...}
    
        // Bind the label's text to the DatePicker value
        dateFormatter.dateStyle = .ShortStyle
        dateFormatter.dateFormat = "yyyy-MM-dd"
        cell.dateText.text = dateFormatter.stringFromDate(datePicker.date)
    }
    
    func dateChangedInDate(sender:UIDatePicker){
        // Trigger table update for the selected row
        let indexPath = NSIndexPath(forRow: selectedIndex, inSection:0)
        tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
    }
    
  • 1
    create Variable to store data value.
    // var dateTime = ""
    //cellForIndexMethod
     cell.dateText.text = dateTime
    
    
    func dateChangedInDate(sender:UIDatePicker){
    
     dateFormatter.dateStyle = .ShortStyle
     dateFormatter.dateFormat = "yyyy-MM-dd"
     dateTime = dateFormatter.stringFromDate(datePicker.date)
     let indexPath = NSIndexPath(forRow: selectedIndex, inSection:0)
    
     //Reload table
       self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
    
    }
    

相关问题