2016-04-04 50 views
0

如果日期(小標題)比今天早5天,我想將tableview中的行顏色更改爲紅色。我想是這樣的:(例如與文本框顏色)Swift tableview row color based on subtitle

// 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天?

+1

當問題 陳述簡單地「它不起作用」時,很難提供解決方案。請編輯您的 問題,以更全面地描述您的 預期會發生什麼,以及與實際的 結果有何不同。請參閱[問]提示什麼使得一個好的 解釋。 –

回答

0

可以使用的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 

這可能是一個粗略的方法,但我認爲這是很容易理解和容易改變和適應您的需求。

+0

請不要使用'(60 * 60 * 24)'進行日期計算。由於DST,日期可以是23,24或25小時日誌。 – vikingosegundo

+0

您對一般情況適用,我確實說這是一個粗略的方法,但我會相應地更新,以免人們今後不會複製這個答案 – Emptyless

+0

更新答案vikingosegundo – Emptyless