gpt4 book ai didi

ios - 从嵌入在 tableview 单元格中的 uicollectionview 执行 segue 选择?

转载 作者:搜寻专家 更新时间:2023-11-01 06:16:56 28 4
gpt4 key购买 nike

目前我们有一个嵌入在 tableview 单元格中的 uicollectionview。当 Collection View 单元格被选中时,它应该启动一个推送到另一个 View Controller 。问题是没有在单元格上执行 segue 的选项。有办法解决吗?这是单元格:

class CastCell : UITableViewCell {

var castPhotosArray: [CastData] = []

let extraImageReuseIdentifier = "castCollectCell"
let detailToPeopleSegueIdentifier = "detailToPeopleSegue"

var castID: NSNumber?

@IBOutlet weak var castCollectiontView: UICollectionView!

override func awakeFromNib() {
castCollectiontView.delegate = self
castCollectiontView.dataSource = self
}
}


extension CastCell: UICollectionViewDataSource {

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return castPhotosArray.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = castCollectiontView.dequeueReusableCell(withReuseIdentifier: extraImageReuseIdentifier, for: indexPath) as! CastCollectionViewCell

cell.actorName.text = castPhotosArray[indexPath.row].name
return cell
}
}

extension CastCell: UICollectionViewDelegate {

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.castID = castPhotosArray[indexPath.row].id

performSegue(withIdentifier: detailToPeopleSegueIdentifier, sender: self) //Use of unresolved identifier 'performSegue' error

}
}


extension CastCell {
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let peopleVC = segue.destination as! PeopleDetailViewController

peopleVC.id = self.castID
}
}

最佳答案

The problem is there is no option to perform the segue on the cell

没有“单元格上的转场”这样的东西。 segue 是从一个 View Controller 到另一个 View Controller 。 performSegue 是一个 UIViewController 方法。所以你不能在你的 CastCell 类中说 performSegue,因为那意味着 self.performSegue,而 self 是一个 UITableViewCell — 它没有 performSegue 方法。

因此,解决方案是让自己获得对控制该场景的 View Controller 的引用,并对其调用 performSegue

在像您这样的情况下,我喜欢获取此引用的方式是沿着响应者链向上移动。因此:

var r : UIResponder! = self
repeat { r = r.next } while !(r is UIViewController)
(r as! UIViewController).performSegue(
withIdentifier: detailToPeopleSegueIdentifier, sender: self)

关于ios - 从嵌入在 tableview 单元格中的 uicollectionview 执行 segue 选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638036/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com