You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中TableView嵌套CollectionView如何执行segue跳转?

实现嵌套CollectionView点击跳转并传递影片模型的解决方案

步骤1:在HomeTableViewCell中添加选中回调闭包

由于CollectionView嵌套在TableViewCell内部,无法直接触发ViewController的segue,需要通过闭包将选中事件传递给上层的HomeViewController。

首先在HomeTableViewCell类中添加闭包属性:

class HomeTableViewCell: UITableViewCell {
    // 保留原有属性(如movieSection等)
    var onMovieSelected: ((Movie) -> Void)? // 替换Movie为你实际的影片模型类名
}

接着修改collectionView(_:didSelectItemAt:)方法,触发闭包并传递选中的影片:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let selectedMovie = movieSection?.movies[indexPath.row] else { return }
    onMovieSelected?(selectedMovie)
}

步骤2:在HomeViewController中绑定回调并触发Segue

在TableView的cell配置方法中,为每个cell绑定选中回调,在回调内执行segue跳转:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tablecell", for: indexPath) as! HomeTableViewCell
    cell.movieSection = movies?.response[indexPath.row]
    
    // 绑定选中回调
    cell.onMovieSelected = { [weak self] movie in
        // 替换"showMovieDetail"为你在Storyboard中设置的segue标识符
        self?.performSegue(withIdentifier: "showMovieDetail", sender: movie)
    }
    
    return cell
}

步骤3:在prepare方法中传递影片数据到目标页面

实现HomeViewController的页面跳转准备方法,将选中的影片传递给详情页:

extension HomeViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard segue.identifier == "showMovieDetail",
              let detailVC = segue.destination as? MovieDetailViewController, // 替换为你的详情页VC类名
              let selectedMovie = sender as? Movie else { return }
        
        detailVC.selectedMovie = selectedMovie // 详情页需提前定义接收影片的属性
    }
}

关键注意事项

  • 确保影片模型类(如示例中的Movie)可以正常在页面间传递,自定义模型无需特殊处理,直接赋值即可
  • 确认Storyboard中已创建对应segue,且标识符与代码中一致
  • 使用[weak self]避免循环引用,防止内存泄漏

内容的提问来源于stack exchange,提问作者Yavuz Ulgar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:53:17