2017-04-26 60 views
0

當某個CollectionView單元格被點擊時,我想設置一個變量爲不同的字符串。因此cell1被點擊然後var cellTapped = "cell1",單元2被點擊然後var cellTapped = "cell2"依此類推。有人建議我更改基於單元格單擊的變量

「創建一個自定義單元格並保持價值財產和閱讀didSelectCell()這個 值」

,但我不知道如何做到這一點(新手)。

(SWIFT 3)

+0

工作是'cell1'和'cell2'只是樣品。如果這就是你所需要的,那麼將'indexpath.row'附加到'cell'前綴是一個簡單的問題。 – toddg

+0

會有更多的單元格,但命名和設置var就像那樣很好。但我不知道是在哪裏/如何設置它以識別cell1/cells2/cell3/cell4 ...被點擊。如果你有這樣的示例代碼,它會幫助很多@toddg –

回答

1

您需要設置UICollectionViewDelegate您的ViewController,然後實現didSelectItemAt IndexPath當細胞被竊聽時調用。

事情是這樣的:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = "cell" + String(indexPath.row) 
} 

你也可以有一個字符串數組和索引基於indexPath.row對數組:

let cellStringValues = ["cell1", "cell2", "cell3", ... , "celln"] 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = cellStringValues[indexPath.row] 
} 
+0

當我嘗試在下一個視圖中獲取變量時,它不起作用。在第二個VC中,我讓'CV = CollectionViewController()'然後在'viewDidLoad()'我有'lbl.text = CV.cellTapped'它只是沒有給出值。 –

+0

您需要將第一個VC的值傳遞給第二個VC。在第二個VC中創建另一個CollectionView不會給你在前一個視圖中點擊的值。 – toddg

1

設置您的視圖控制器是的委託UICollectionView。你的視圖控制器應該從UICollectionViewDelegate繼承。然後,在VC的viewDidLoad()中,將UICollectionView的委託變量設置爲ViewController。要捕獲選擇事件,請覆蓋以下UICollectionViewDelegate函數。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    cellTapped = "cell\(indexPath.row)" 
} 

詳細信息請參考了https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started與收集意見

相關問題