2017-04-17 77 views
2

我有一個包含多個以編程方式創建的單元格的集合視圖。我想在用戶點擊特定單元格時將變量更新爲不同的值。所以例如:單元1被點擊 - > var test =「cell1」,單元2被點擊var test =「cell2」。通常我只是通過從故事板拖動來創建一個IBAction,但我不確定在這種情況下如何做到這一點。爲CollectionViewCell創建IBAction

我使用雨燕3.1

回答

1

添加交互到UITableView S,UICollectionView,且其它種類的視圖的數據顯示集合,你不能用故事板的操作,如動態過程中產生的內容運行時,故事板只能用於靜態內容。

相反,您需要做的是將UICollectionViewdelegate屬性設置爲實現UICollectionViewDelegate協議的對象。定義爲協議一部分的方法之一是collectionView(_:didSelectItemAt:)方法。只要用戶選擇(點擊)以該單元格爲參數的IndexPath集合視圖單元格,該方法就會被調用。您可以使用該方法更新您的變量。請記住,在使用UICollectionView上的deselectItem(at:)方法處理水龍頭後取消選擇該單元格。

0

有需要實現的UICollectionView委託。它就像這樣

在索引路徑中做過選擇項會給出所選單元的索引路徑。使用indexpath或您正在使用的數據源數組的任何其他屬性,可以修改變量值。

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    if let cell = collectionView.cellForItemAtIndexPath(indexPath) { 
     //check your condition and modify the variable value depending on index path or any other property you are referring to. 
    } 
} 
+1

雖然你的回答是正確的,但它使用了Swift 2方法名。 例如,'的CollectionView(_:didSelectItemAtIndexPath:)'方法已經變爲'的CollectionView(_:didSelectItemAt:)'和'cellForItemAtIndexPath'方法已經變爲'cellForItem(在:)' –

+0

@PedroCastilho感謝用於添加Swift 3代碼。 諾蘭,如果你提到這種語言,那將會很棒。 –