使用Override UICollectionView在UicollectionViewController上调用委托方法

时间:2013-06-02 21:07:20

标签: uicollectionview uicollectionviewcell

UICollectionViewController所有dataSource和委托方法都正常运行。最近,当我选择时,我在每个单元格上添加了Flip View,当我选择另一个单元格时,第一个单元格正确地使用协议方法取消选择。

  1. 现在我有一个场景,一旦我选择了单元格,然后它就会被翻转。用户在flipView上执行segue thru'按钮
  2. 当我返回时,仍然选择了该单元格但是当我选择另一个单元格时,didDeselect永远不会从第一个上的collectionView调用。
  3. 回答

    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];
    

0 个答案:

没有答案