Я пытаюсь сделать UICollectionViewCell отображением некоторой информации, щелкнув ее один раз и сделав ее содержимое пропавшим, щелкнув его снова. Первое, что приходит мне на ум, - использовать didSelectItemAtIndexPath/didDeselectItemAtIndexPath. Однако это не работает, поскольку после вызова метода reloadData() каждый статус «выбранной» ячейки возвращается к «unselected», так что метод didDeselectItemAtIndexPath никогда не вызывается.UICollectionView не вызывает didDeselectItemAtIndexPath после reloadData
Есть ли какой-нибудь умный способ обойти эту проблему? Большое спасибо за вашу любезную помощь заранее!
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
// do something
self.UICollectionView.reloadData()
}
func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
// do something else
}
Благодарим вас за вашу неоценимую помощь! Я последовал вашим советам, добавив логическую переменную, чтобы отслеживать, отображает ли ячейка что-то или нет, и использовать метод didSelectItemAtIndexPath. Теперь это работает!
Я считаю, что подход BaseZen также будет работать и является более законным. Но так как я не хочу менять слишком много кодов, поэтому я выбрал более удобный. Но спасибо все равно!
Вы можете использовать некоторую дополнительную переменную и манипулировать ею вручную в методе didSelectItemAtIndexPath, который вызывается каждый раз, когда вы выбираете строку –
. Я не думаю, что вам нужно вызвать reloadData(). Вы можете обновить свою ячейку без этого. – Caleb