這是因爲您的類eventsCustomCollectionCell是UICollectionViewCell子類而不是UIViewController子類。
func performSegue(withIdentifier identifier: String, sender: Any?)
是在UIViewController中可用的方法。因此,對於解決方案,您可以創建一個eventsCustomCollectionCell協議,可以有一個方法
func cellClicked(cell: eventsCustomCollectionCell)
和你FeedAndGroupsViewController可以實現此協議,並可以調用performSegue。
我已經爲您的用例編寫了框架代碼,您可以參考此代碼並開始使用。
class EventsCustomCollectionCell: UICollectionViewCell,UITableViewDelegate{
weak var delegate : EventsCustomCollectionCellDelegate?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
delegate?.didClick(cell: self)
}
}
protocol EventsCustomCollectionCellDelegate : class{
func didClick(cell:EventsCustomCollectionCell)
}
class FeedAndGroupsViewController: UIViewController,EventsCustomCollectionCellDelegate,UICollectionViewDataSource{
var collectionView : UICollectionView!
var yourArrayForCollectionView = [String]()
func didClick(cell:EventsCustomCollectionCell){
if let index = collectionView.indexPath(for:cell){
let object = yourArrayForCollectionView[index.row]
performSegue(withIdentifier: "Your segue identifier", sender: object)
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Your cell reuse id", for: indexPath) as! EventsCustomCollectionCell
cell.delegate = self
return cell
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return yourArrayForCollectionView.count
}
}
希望這會有所幫助。
感謝您的幫助!我試過你的解決方案,但似乎我無法在函數cellForItemAt中調用collectionViewCell的委託。 –
您必須調用UICollectionViewCell中UITableViewDelegate的didSelectRowAt中的委託方法。我更新了我的代碼。 –
太棒了!非常感謝你 –