Изменение цвета текста нескольких выделенных ячеек табличного представления в UITableView

Вам нужно будет использовать JavaScript, не приводя к iframe (уродливый подход).

Вы можете сделать это в JavaScript; использование jQuery сделает его безболезненным.

Я предлагаю вам проверить AJAX и проводку.

0
задан rmaddy 18 January 2019 в 17:43
поделиться

5 ответов

Это потому, что в действительности клетка используется повторно. Чтобы решить это, вам нужна логика, что делать с ячейками / строками, не удовлетворяющими вашему условию indexPath.row > 4. :)

0
ответ дан Glenn 18 January 2019 в 17:43
поделиться

Это потому, что действительно ячейка используется повторно.

Обязательно используйте условие else каждый раз в UITableView и UICollectionView, чтобы значение не менялось во время скроллинга.

Вот 2 способа, которыми вы можете следовать, чтобы цвет не менялся.

cell.label.textColor = indexPath.row > 4 ? .blue : .black

ИЛИ

if indexPath.row > 4 {
    cell.label.textColor = UIColor.blue
}
else {
    cell.label.textColor = UIColor.black
}
0
ответ дан PinkeshGjr 18 January 2019 в 17:43
поделиться

Вам нужно также установить другое условие, чтобы оно не изменилось

if indexPath.row > 4 {
    cell.label.textColor = UIColor.blue
}
else {
    cell.label.textColor = UIColor.black
}
0
ответ дан Uma Madhavi 18 January 2019 в 17:43
поделиться

Вам придется добавить еще одну часть в ваш метод cellForRow с момента возникновения проблемы с удалением из очереди или проблемой повторного использования ячейки.

cell.label.textColor = indexPath.row > 4 ? .blue : .black

Примечание. Не забывайте добавлять часть else в метод cellForRow, в противном случае она будет вести себя странно.

0
ответ дан Jarvis The Avenger 18 January 2019 в 17:43
поделиться

Во-первых, ваш код в своем текущем состоянии устанавливает цвет всех ячеек, индексы которых превышают от 4 до blue, а не только последних 4 ячеек. Вам нужно изменить свое состояние.

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

Итак, ваш код должен выглядеть примерно так:

if indexPath.row > numberOfRows - 4 {
    cell.label.textColor = .blue
} else {
    cell.label.textColor = .black
}

Или, как уже упоминалось @jarvis, вы можете использовать троичный оператор, чтобы сделать ваш код более компактным, например:

cell.label.textColor = indexPath.row > numberOfRows - 4 ? .blue : .black
[ 118] numberOfRows - это число строк в табличном представлении.

0
ответ дан Mo Abdul-Hameed 18 January 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: