Первое, что я делаю, это установить выбранную ячейку.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
cell.selected = YES;
return cell;
}
И ячейка успешно выбрана. Если пользователь касается выбранной ячейки, то следует отключить ячейку и вызвать делегатов. Но этого никогда не бывает.
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __PRETTY_FUNCTION__);
}
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __PRETTY_FUNCTION__);
}
Я знаю, что делегаты не вызывается, если я программно выбираю выбор. Делегат и источник данных установлены.
Однако этот делегат вызывается:
- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __PRETTY_FUNCTION__);
return YES;
}
Если я удалю cell.selected = YES
, чем все работает. Есть ли кто-нибудь, кто может мне объяснить это поведение?