【问题标题】:Swift tableview row color based from subtitle基于字幕的 Swift tableview 行颜色
【发布时间】:2016-04-04 17:21:55
【问题描述】:

我想将我的表格视图中的行颜色更改为红色。如果日期(副标题)从今天起超过 5 天。我尝试了类似的方法:(文本字段颜色的示例)

    // Configure the cell...

    cell.textLabel?.textColor = UIColor.blueColor()
    cell.detailTextLabel?.textColor = UIColor.darkGrayColor()

    let item = frc.objectAtIndexPath(indexPath) as! Item
    cell.textLabel?.text = item.name! + "-" + item.etage! + "-" + item.raum!
    let note = item.date
    cell.detailTextLabel!.text = "\(note!)"

    if note == "04.04.2016 20:31:55" {
        cell.detailTextLabel?.textColor = UIColor.redColor()
    } else {

    }


    return cell
}

它可以工作..但只有准确的时间(分钟,秒)。 我怎样才能做到这一点,只比较一天减去 5 天?

【问题讨论】:

  • 当问题陈述很简单时,很难提供解决方案,“它不起作用”。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。

标签: swift uitableview date row


【解决方案1】:

你可以使用 NSDate 的扩展:

extension NSDate {
    func numberOfDaysRoundedUp(toDateTime : NSDate) -> Int {
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(NSCalendarUnit.Day, fromDate: self, toDate: toDateTime, options: [])
        return abs(components.day)
    }

    func olderThanFiveDays(toDateTime : NSDate) -> Bool {
        return (numberOfDaysRoundedUp(toDateTime) > 5)
    }
}

用法:

// Today (4 April 2016 - 19:16:14)
let date : NSDate = NSDate()

// 1 April 2016 - 19:16:14
let aprilFirst : NSDate = NSDate(timeIntervalSince1970: NSTimeInterval(1459538184))
// 1 March 2016 - 19:29:00
let marchFirst : NSDate = NSDate(timeIntervalSince1970: NSTimeInterval(1456860540))

print(date.numberOfDaysRoundedUp(aprilFirst)) // 3
print(date.olderThanFiveDays(aprilFirst)) // False

print(date.numberOfDaysRoundedUp(marchFirst)) // 34
print(date.olderThanFiveDays(marchFirst)) // True

这可能是一种粗略的方法,但我认为它易于理解,易于更改并满足您的需求。

【讨论】:

  • 请不要使用(60 * 60 * 24) 进行日期计算。由于 DST,天可以是 23、24 或 25 小时的日志记录。
  • 一般情况下你是对的,我确实说过这是一种粗略的方法,但我会相应地更新,这样人们以后就不会复制这个答案了
猜你喜欢
  • 2017-10-21
  • 2018-12-22
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2013-08-07
  • 2011-07-28
  • 1970-01-01
  • 2016-08-10
相关资源
最近更新 更多