我有一个UITableView,其中包含一个自定义单元格,其中包含一个水平滚动的UICollectionView,类似于Netflix应用程序。我试图在用户点击UICollectionViewCell时执行segue。但是,performSegue(withIdentifier: )
在Collection View Cells中不可用。
我尝试使用委托来处理segue:
在我的视图控制器类中:
func segueToNext(identifier: String) {
performSegue(withIdentifier: identifier, sender: self)
}
在UITableViewCell类中,我有Collection View委托方法,我有这个代码:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
delegate?.segueToNext(identifier: "showDiningServices")
}
当我点击单元格时,不会调用segueToNext
。还有其他方法可以实现这一目标吗?谢谢!
在你里面
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = //////
cell.delegate = self
}
//
要做到这一点,你必须设置
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
delegate?.segueToNext(identifier: "showDiningServices")
}
//
self.collectionView.delegate = self // self here is UITableViewCell
要么
你也可以在VC里面实现collectionView delegate和dataSource
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = //////
cell.collectionView.delegate = self
cell.collectionView.dataSource = self
}
然后直接在VC里面实现这个
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
performSegue(withIdentifier: "showDiningServices", sender: self)
}
您可以尝试使用导航控制器推送视图控制器(使用方法pushViewController)。当用户单击集合视图单元而不是集合视图委托时,调用didSelectItemAtIndexPath并且您可以在该委托方法中执行视图控制器的推送。