2016-05-08 60 views
3

今天早上我畫了一個空白,可以使用一點指導。Swift桌面單元重用問題

我使用自定義表格單元格填充字典數組的字典。一個在字典中的關鍵值對爲[「時間」],其類型的字典的陣列中表示爲這樣:

「時間」:「上午12點」, 「時間」:「上午01點‘ ’時間「:」2am「, 」time「:」3am「等等......。

這是我想要做的。

如果一天的當前時間是凌晨1點(例如),我想更改該單元的背景顏色。我有部分工作使用下面粘貼的代碼。當表格視圖加載正確的單元格時突出顯示,但是當我在表格視圖中上下滾動時,我看到其他行正在突出顯示。我認爲這與細胞如何被重複使用有關。

其他信息: 1)「項目」是我的字典 2)currentTime的()僅僅是一個小的函數,返回當天的當前時間格式(「下午1點」)

有人陣列指向正確的方向?

親切的問候, 達林

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:schedTableCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! schedTableCell 
    cell.selectionStyle = .None 

    // Highlight row where time value is equal to current time - THIS NEEDS WORK 
    let showTime = self.items[indexPath.row]["time"] as! String 
    if showTime == currentTime() { 
     cell.backgroundColor = UIColor.greenColor() 
    } 

    cell.showTime.text = self.items[indexPath.row]["time"] as? String 
    cell.showName.text = self.items[indexPath.row]["show"] as? String 
    cell.showHost.text = self.items[indexPath.row]["host"] as? String 

    return cell 
} 

回答

5

事實上,這是一個再利用問題。當你這樣做時cell.backgroundColor = UIColor.greenColor(),你改變單元格的背景顏色。但是當單元格被重用時,你不會重置背景顏色,所以它保持綠色!你能解決這個問題是這樣的(如果white是你正常顏色):

if showTime == currentTime() { 
     cell.backgroundColor = UIColor.greenColor() 
    } else { 
     cell.backgroundColor = UIColor.whiteColor() 
    } 
+0

OMG。不能相信我忽略了這一點。非常感謝!! – Darin