2

すべてUICollectionViewControllerdataSourceメソッドとデリゲート メソッドが正しく動作しています。最近、選択時にすべてのセルに Flip View を追加し、別のセルを選択すると、プロトコル メソッドを正しく使用して最初のセルの選択が解除されます。

  1. 今、セルを選択すると反転するシナリオがあります。ユーザーは、flipView のボタンを介してセグエを実行します
  2. 私が戻ったとき、そのセルはまだ選択されていますが、別のセルを選択すると、最初のセルの collectionView から 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)そして、ユーザーがすでに選択されているセルでセグーを実行すると、メインコントローラーでこれを行います

[self.collectionView deselectItemAtIndexPath:indexPath animated:YES];

これは正しい方法ですか?これは正常に機能し、問題はありません。コントローラー自体から(セグエで) collectionView:self didDeselectItemAtIndexPath:indexPath] を呼び出すこともできたかもしれませんが、呼び出しが完全に読みにくくなるため、どういうわけかそれが好きではありませんでした。

[self collectionView:self.collectionView didDeselectItemAtIndexPath:indexPath];
4

0 に答える 0