У меня настроена коллекция с включенными локальными данными и множественным выбором. Когда я запускаю это на реальном устройстве, у меня возникают некоторые проблемы с рендерингом. Когда я прокручиваю сверхбыстрый, требуется некоторое время, прежде чем появятся активные ячейки. Они остаются неактивными в течение некоторого времени, когда я останавливаюсь, а затем внезапно появляется.
На didSelect я делаю следующее;
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! FRMenuCollectionViewCell
let selectedCells:[IndexPath] = collectionView.indexPathsForSelectedItems!
cell.isSelected = true
switch indexPath.section {
case 0:
let item = fixedData[indexPath.row]
itemSelection.append(item)
break
case 1:
handleContinentSelection(with: indexPath)
break
default:
print("An unexpected case occured")
}
}
func handleContinentSelection(with indexPath: IndexPath) {
let continent = continentData[indexPath.row]
for country in countryData {
if (country.continent?.continentName)! == continent {
itemSelection.append(country.countryName!)
if let index = countryData.lastIndex(of: country) {
collectionView?.selectItem(at: IndexPath(row: index, section: 2), animated: false, scrollPosition: [])
}
}
}
}
Как показано выше, все выборки в коллекциях имеют различный способ обработки выбора. Если я выбираю что-то в разделе 1, я также выбираю ячейки в разделе 2.
Выбранное и невыбранное состояние обрабатываются в подклассе следующим образом:
class FRMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var label: UILabel!
override var isSelected: Bool {
didSet {
if super.isSelected == true {
self.label.attributedText = NSMutableAttributedString(string: self.label.text!, attributes: FRSharedStyles.filledTextAttributes)
} else {
self.label.attributedText = NSMutableAttributedString(string: self.label.text!, attributes: FRSharedStyles.opaqueStrokeTextAttributes)
}
}
}
}
Таким образом, выделенное состояние представляет собой заполненный текст, а выделенное состояние выделяется. Все работает хорошо, просто медленно отображается на моем Apple TV при быстрой прокрутке (с боковой прокруткой это наиболее заметно). Любые идеи о том, как оптимизировать это будет оценено.