Ячейки табличного представления, меняющие цвета при прокрутке Swift

Я делаю приложение, которое использует цветные ячейки табличного представления, чтобы разделить другие ячейки на категории. Я делаю это, окрашивая клетки в разные цвета, используя операторы if else. Но по какой-то причине, когда я запускаю приложение, чем больше я прокручиваю вверх и вниз в табличном представлении, тем больше других ячеек также меняет цвет в случайном порядке. Это код в моем собственном классе instrumentTableCell:

@IBOutlet var nameLabel: UILabel?
@IBOutlet var descriptionLabel: UILabel?
@IBOutlet var thumbnailImage: UIImageView!

func configurateTheCell(recipie: Recipie) {
    self.nameLabel?.text = recipie.name
    self.descriptionLabel?.text = recipie.description
    self.thumbnailImage?.image = UIImage(named: recipie.thumbnails)
    if nameLabel!.text == "Instrument"
    {
        backgroundColor = UIColor.orangeColor()
        nameLabel?.textColor = UIColor.blackColor()
    }
    else if nameLabel!.text == "Optional addon"
    {
        backgroundColor = UIColor.cyanColor()
    }

}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if nameLabel!.text == "Instrument"
    {
        return 20
    }
    else if nameLabel!.text == "Optional addon"
    {
        return 20
    }
    else
    {
        return 100
    }


}

и вот как приложение выглядит при запуске: когда приложение запускается

по сравнению с тем, когда пользователь немного прокрутил: после прокрутки

Кроме того, если кто-нибудь знает, как, я хотел бы, чтобы цветные ячейки также были меньше, чтобы приложение выглядело лучше.

1 ответ

Вы можете установить в методе делегата cellForRowAtIndexPath

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("your identifier", forIndexPath: indexPath)
     if cell.recipie.name == "Instrument"
     {
      backgroundColor = UIColor.orangeColor()
      nameLabel?.textColor = UIColor.blackColor()
     }
    else if cell.recipie.name == "Optional addon"
     {
      backgroundColor = UIColor.cyanColor()
     }
   else{
    backgroundColor = UIColor.whiteColor()
   }
  return cell
 }
Другие вопросы по тегам