ios - 如何从 TableView 中的日期选择器加载文本框中的值

标签 ios swift uitableview

我有一个带有 2 个文本框的表格 View 。text1 在 vi​​ewdidload 函数上加载数据。 对于text2,输入是日期。我正在使用 tableview didselectrow 方法来显示日期选择器。但是当我从日期选择器中选择日期时,它会在控制台中打印,但不会添加到文本框中。

` 覆盖 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)


}

` 如有任何帮助,我们将不胜感激......

最佳答案

您应该尝试对 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 方法中的单元格进行所有更新。使标签的 text 绑定(bind)到 DatePicker 值。然后,在您的 dataChangedWithDate() 方法中,使用 table.reloadRowsAtIndexPath() 触发相关行的表更新。请注意,我假设 selectedIndex 是您的 Controller 的实例变量,因此您可以在 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)
}

关于ios - 如何从 TableView 中的日期选择器加载文本框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147572/

相关文章:

ios - UIView animateWithDuration UITableView 导致 UITableViewCell subview 也有动画

ios - 如何在 viewdidload 中以编程方式调整 TableView 的高度

ios - 当 JSON 输入表示 Codable 类型的多个子类时使用 Codable

ios - TabBar 选择的指示器图像在 Objective C 中没有占据整个 tabBar 高度

swift - 如何将自定义时区从 Microsoft Time Zone Index Value 设置为 Swift?

swift - viewDidLoad() 和全局变量

iphone - 将 UITextField 添加到cameraOverlay

ios - 根据键盘高度更新文本字段的约束

ios - IOS Swift 中的容器 View 中未触发按钮操作

ios - 如何以编程方式将 UITableView 样式从普通样式转换为组样式