すべてUICollectionViewController
のdataSource
メソッドとデリゲート メソッドが正しく動作しています。最近、選択時にすべてのセルに Flip View を追加し、別のセルを選択すると、プロトコル メソッドを正しく使用して最初のセルの選択が解除されます。
- 今、セルを選択すると反転するシナリオがあります。ユーザーは、flipView のボタンを介してセグエを実行します
- 私が戻ったとき、そのセルはまだ選択されていますが、別のセルを選択すると、最初のセルの 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];