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

Swift实现TableView点击跳转详情页并展示电影海报、标题与年份

实现详情页数据填充的步骤

1. 给DetailViewController添加数据接收属性

打开DetailViewController.swift,新增对应的数据属性,并在页面加载时完成UI填充:

import UIKit

class DetailViewController: UIViewController {
    // 假设已通过Storyboard关联以下UI控件
    @IBOutlet weak var posterImageView: UIImageView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var yearLabel: UILabel!
    
    // 新增接收选中电影的属性
    var selectedMovie: Movie?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        fillUIWithMovieData()
    }
    
    // 封装UI填充逻辑
    private func fillUIWithMovieData() {
        guard let movie = selectedMovie else { return }
        
        titleLabel.text = movie.title
        yearLabel.text = movie.year
        // 本地图片直接加载,网络图片需用网络请求加载
        posterImageView.image = UIImage(named: movie.poster)
        
        // 网络图片加载示例(可替换为SDWebImage等第三方库简化逻辑)
        // if let posterUrl = URL(string: movie.posterUrl) {
        //     URLSession.shared.dataTask(with: posterUrl) { [weak self] data, _, error in
        //         guard let data = data, error == nil else { return }
        //         DispatchQueue.main.async {
        //             self?.posterImageView.image = UIImage(data: data)
        //         }
        //     }.resume()
        // }
    }
}

2. 在ViewController中传递选中的电影数据

打开ViewController.swift,在单元格点击方法中给详情页赋值:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!
    // 假设已初始化电影数据数组
    var movies: [Movie] = []
    
    // 已实现的数据源方法(numberOfRowsInSection、cellForRowAt)略
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let targetMovie = movies[indexPath.row]
        
        // 实例化详情页(Storyboard方式)
        guard let detailVC = storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as? DetailViewController else { return }
        
        // 传递数据
        detailVC.selectedMovie = targetMovie
        
        // 跳转页面(导航栏跳转,模态跳转用present方法)
        navigationController?.pushViewController(detailVC, animated: true)
    }
}

3. 检查Storyboard配置(若使用Storyboard)

  • 确保DetailViewController的Storyboard ID设置为DetailViewController(与代码中实例化的标识符一致)
  • 确认所有UI控件已正确关联IBOutlet,无断开情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:42