在UITableView中的自定义UICollectionView Embedded中执行Segue

问题描述 投票:0回答:2

我有一个UITableView,其中包含一个自定义单元格,其中包含一个水平滚动的UICollectionView,类似于Netflix应用程序。我试图在用户点击UICollectionViewCell时执行segue。但是,performSegue(withIdentifier: )在Collection View Cells中不可用。

enter image description here

我尝试使用委托来处理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。还有其他方法可以实现这一目标吗?谢谢!

ios swift xcode uitableview uicollectionview
2个回答
2
投票

在你里面

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)  
}

0
投票

您可以尝试使用导航控制器推送视图控制器(使用方法pushViewController)。当用户单击集合视图单元而不是集合视图委托时,调用didSelectItemAtIndexPath并且您可以在该委托方法中执行视图控制器的推送。

© www.soinside.com 2019 - 2024. All rights reserved.