2012-12-12 137 views
3

我有一個viewController其中包含一個UICollectionView其中我已經實現了兩個委託方法shouldSelectItemAtIndexPath和didSelectItemAtIndexPath。 shouldSelect方法按預期工作,並針對所選的每個單元進行調用。奇怪的行爲與UICollectionViewDelegate

即使點擊了多次,didSelect方法也不會在被點擊的第一個單元上調用。但是,如果您點擊第二個單元格,則會調用didSelect方法,但是indexPath.item值用於以前點擊的單元格。

例如,我點擊collectionView中的第一個單元格,並調用shouldSelect,它的indexPath.item值= 0。即使對於單元格上的多個水龍頭,也不調用DidSelect。

如果我然後點擊任何其他單元格,例如說,collectionView中的第4個單元格,shouldSelect被調用,並且其indexPath.item值= 3。didSelect也被調用,但它的indexPath.item值= 0(先前選擇的單元格)。

如果我繼續選擇不同的單元格,didSelect會繼續被調用,但indexPath.item值始終用於先前選擇的項目。如果我點擊一個單元格多次,didSelect將無法被調用,直到我點擊一個不同的單元格。

有人嗎?我很難過。所有其他數據源和委託方法似乎工作正常。委託和數據源在故事板中正確連線。

回答

9

確保您

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 

實際上不是

- (void)collectionView:(UICollectionView *)collectionView didDeSelectItemAtIndexPath:(NSIndexPath *)indexPath 

(DidDeSelect與DidSelect)

我有同樣的問題。

+0

神聖的廢話,這可能只是爲我節省了很多時間。我懷疑我曾經見過。 – Jesse