Ячейки табличного представления, меняющие цвета при прокрутке 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
}