【问题标题】:TableViewCell updating incorrectly - iOS, SwiftUITableViewCell 更新不正确 - iOS,Swift
【发布时间】:2017-02-26 08:22:42
【问题描述】:

我有一个带有 DatePicker 的自定义单元格,当用户单击该单元格时,该单元格会展开到显示日期选择器的完整视图(我附上了自定义单元格的图像)。我正在尝试根据日期选择器选择更新开始时间。

当我在 datepicker 中更改时间时: - 第一次正确更新日期 - 第二次回到原来的值

有人可以建议我如何解决这个问题吗?

class DailyTimesTableViewCell: UITableViewCell {


    @IBOutlet weak var startTime: UIButton!
    @IBOutlet weak var datePicker: UIDatePicker!

    @IBAction func timePickerChanged(_ sender: UIDatePicker) {

        startTime.titleLabel?.text = convertDateToString(sender.date)

    }
   func convertDateToString(_ dateObject: Date) -> String{
        let dateFormatter           = DateFormatter()
        dateFormatter.timeStyle = .short
        let dateString = dateFormatter.string(from: dateObject)
        return dateString
    }
}

下面是显示错误的 gif

下面是自定义单元格

【问题讨论】:

  • 问题出在这里 - convertDateToString(),也分享一下
  • 你把你的代码放在你自定义的tableview单元类里面?如果单元格自身出列,您不会遇到麻烦吗?如果您不重用视图,为什么不在静态表格视图中创建它?
  • @KrunalBhavsar 也添加了 convertDateToString() 函数
  • @JoshuaVidamo 我会试试你的建议
  • dateFormatter.timeStyle = .short >> 将此行替换为 >> dateFormatter.format = "hh:mm a"

标签: ios swift uitableview datepicker


【解决方案1】:

您必须使用以下方法设置按钮的标题。

func setTitle(String?, for: UIControlState)

我复制了问题并通过替换行来解决

startTime.titleLabel?.text = convertDateToString(sender.date)

startTime.setTitle(convertDateToString(sender.date), for: .normal)

这是我经常犯的一个很常见的错误。

【讨论】:

  • 当我将方法 titleLabel 替换为 setTitle 时,它可以工作
猜你喜欢
  • 2014-11-17
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多