我有一個包含多個以編程方式創建的單元格的集合視圖。我想在用戶點擊特定單元格時將變量更新爲不同的值。所以例如:單元1被點擊 - > var test =「cell1」,單元2被點擊var test =「cell2」。通常我只是通過從故事板拖動來創建一個IBAction,但我不確定在這種情況下如何做到這一點。爲CollectionViewCell創建IBAction
我使用雨燕3.1
我有一個包含多個以編程方式創建的單元格的集合視圖。我想在用戶點擊特定單元格時將變量更新爲不同的值。所以例如:單元1被點擊 - > var test =「cell1」,單元2被點擊var test =「cell2」。通常我只是通過從故事板拖動來創建一個IBAction,但我不確定在這種情況下如何做到這一點。爲CollectionViewCell創建IBAction
我使用雨燕3.1
添加交互到UITableView
S,UICollectionView
,且其它種類的視圖的數據顯示集合,你不能用故事板的操作,如動態過程中產生的內容運行時,故事板只能用於靜態內容。
相反,您需要做的是將UICollectionView
的delegate
屬性設置爲實現UICollectionViewDelegate
協議的對象。定義爲協議一部分的方法之一是collectionView(_:didSelectItemAt:)
方法。只要用戶選擇(點擊)以該單元格爲參數的IndexPath
集合視圖單元格,該方法就會被調用。您可以使用該方法更新您的變量。請記住,在使用UICollectionView
上的deselectItem(at:)
方法處理水龍頭後取消選擇該單元格。
有需要實現的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.
}
}
雖然你的回答是正確的,但它使用了Swift 2方法名。 例如,'的CollectionView(_:didSelectItemAtIndexPath:)'方法已經變爲'的CollectionView(_:didSelectItemAt:)'和'cellForItemAtIndexPath'方法已經變爲'cellForItem(在:)' –
@PedroCastilho感謝用於添加Swift 3代碼。 諾蘭,如果你提到這種語言,那將會很棒。 –