Вам нужно будет использовать JavaScript, не приводя к iframe
(уродливый подход).
Вы можете сделать это в JavaScript; использование jQuery сделает его безболезненным.
Я предлагаю вам проверить AJAX и проводку.
Это потому, что в действительности клетка используется повторно. Чтобы решить это, вам нужна логика, что делать с ячейками / строками, не удовлетворяющими вашему условию indexPath.row > 4
. :)
Это потому, что действительно ячейка используется повторно.
Обязательно используйте условие 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
}
Вам нужно также установить другое условие, чтобы оно не изменилось
if indexPath.row > 4 {
cell.label.textColor = UIColor.blue
}
else {
cell.label.textColor = UIColor.black
}
Вам придется добавить еще одну часть в ваш метод cellForRow с момента возникновения проблемы с удалением из очереди или проблемой повторного использования ячейки.
cell.label.textColor = indexPath.row > 4 ? .blue : .black
Примечание. Не забывайте добавлять часть else в метод cellForRow, в противном случае она будет вести себя странно.
BLOCKQUOTE>
Во-первых, ваш код в своем текущем состоянии устанавливает цвет всех ячеек, индексы которых превышают от 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
- это число строк в табличном представлении.