2016-05-08 2 views
3

Сегодня утром я рисую пробел и могу использовать небольшое руководство.Быстрое повторное использование ячейки для настольных камер

Я заполняю таблицу с массивом словарей, используя пользовательскую ячейку таблицы. Одним из ключевых пар значений в словаре [ «Время»], который представлен в качестве таковых в массиве dicts:

«время»: «12am», «времени»: «1am„ “время ":" 2am ", " время ":" 3am "и так далее ....

Вот что я хотел бы сделать.

Если текущее время дня равно 1 часам (например), я хотел бы изменить цвет фона этой ячейки. Я частично работаю, используя код, вставленный ниже. Когда загружается представление таблицы, соответствующая ячейка подсвечивается, однако, когда я просматриваю вверх и вниз по представлению таблицы, я вижу, что выделяются другие строки. Я предполагаю, что это имеет какое-то отношение к тому, как ячейки повторно используются.

Дополнительная информация: 1) «элементы» мой массив словарей 2) CURRENTTIME() является только небольшой функцией, которая возвращает текущее время в этом формате («1pm»)

Может

кто-то назовите меня в правильном направлении?

С наилучшими пожеланиями, Дарин

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

Смежные вопросы