Ответ 1
Да, это правильное поведение. Документация для [selectItemAtIndexPath: animated: scrollPosition:] говорит:
Этот метод не вызывает вызовы методов-делегатов, связанных с выбором.
У меня есть представление коллекции. Я хотел бы программно выбрать ячейку. Это код, который я использую
[_collectionView selectItemAtIndexPath:[NSIndexPath indexPathForItem:currentSelectedVideo inSection:0] animated:YES scrollPosition:UICollectionViewScrollPositionNone];
По какой-то причине функции:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
Не вызываются, и поэтому визуальный эффект, который я использую для отображения выбранной ячейки, не отображается на экране.
Это правильное поведение?
Да, это правильное поведение. Документация для [selectItemAtIndexPath: animated: scrollPosition:] говорит:
Этот метод не вызывает вызовы методов-делегатов, связанных с выбором.
Вы можете это сделать.
[self.collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
[self collectionView:self.collectionView didSelectItemAtIndexPath:indexPath];
Если используется только selectItemAtIndexPath: анимированный: scrollPosition: метод, не вызывайте метод делегата. если использование только коллекцияView: сделалSelectItemAtIndexPath: метод, не работает стабильный
счастливый код:)
Ответ Osmenda в Swift с моим пользовательским представлением коллекции:
self.collectionView(calendarCV, didSelectItemAtIndexPath: indexPath)