我UICollectionViewController
所有的dataSource
和委托方法都表现正确。最近,当我选择时,我在每个单元格上添加了翻转视图,当我选择另一个单元格时,第一个单元格会使用协议方法正确取消选择。
- 现在我有一个场景,一旦我选择了单元格,然后它就会被翻转。用户在 FlipView 上执行 segue thru' 按钮
- 当我返回时,该单元格仍然被选中,但是当我选择另一个单元格时,didDeselect 永远不会在第一个集合视图中被调用。
回答
1)我实现了自定义 UICollectionView 并添加了下面的代码,因为我在控制器中做一些动画我必须这样称呼它
// Little hack to call Controllers method to delesect the cell
- (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated
{
NSLog(@"Programmtically cell-deselected %@", indexPath);
MyCell *cell = (MyCell*)[self cellForItemAtIndexPath:indexPath];
cell.selected = NO;
[self.delegate collectionView:self didDeselectItemAtIndexPath:indexPath];
[super deselectItemAtIndexPath:indexPath animated:animated]; //Not required!?
}
2)当用户在已选择的单元格上执行 segueu 时,在主控制器中我这样做
[self.collectionView deselectItemAtIndexPath:indexPath animated:YES];
这是正确的方法吗?这工作正常,我认为没有问题。也许我可以从控制器本身(在 segue 中)调用 collectionView:self didDeselectItemAtIndexPath:indexPath] 但不知何故我不喜欢这样,因为调用变得完全令人困惑。
[self collectionView:self.collectionView didDeselectItemAtIndexPath:indexPath];