在UITableView中传递和显示数据

问题描述 投票:0回答:1
<<

ViewController(将数据发送到第二个视图控制器)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let indexPath = tableView.indexPathForSelectedRow let index = indexPath?.row let movieDetails = filteredMovies[index!] let movieDetailsViewController = segue.destination as! MovieDetailsViewController movieDetailsViewController.posterUrl = movieDetails.value(forKeyPath: "backdrop_path") as? String movieDetailsViewController.coverUrl = movieDetails.value(forKeyPath: "poster_path") as? String movieDetailsViewController.movieTitle = movieDetails.value(forKeyPath: "title") as? String movieDetailsViewController.movieRating = movieDetails.value(forKeyPath: "vote_average") as! NSNumber as NSNumber let dateFormatter = DateFormatter() dateFormatter.locale = Locale(identifier: "en_US") dateFormatter.dateFormat = "yyyy-MM-dd" let movieReleaseDateString = movieDetails.value(forKeyPath: "release_date") as? String let movieReleaseDate = dateFormatter.date(from:movieReleaseDateString!) dateFormatter.dateFormat = "MMMM d, yyyy" movieDetailsViewController.movieReleaseDate = dateFormatter.string(from: movieReleaseDate!) movieDetailsViewController.movieOverview = movieDetails.value(forKeyPath: "overview") as? String }

MovieDetailsViewController

var newMovies: [NSDictionary] = [] var movieTitle: String! var movieRating: NSNumber! var movieReleaseDate: String! var movieOverview: String! var posterUrl: String! var coverUrl: String! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() tableView.dataSource = self tableView.delegate = self tableView.estimatedRowHeight = 800 tableView.rowHeight = UITableView.automaticDimension } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.newMovies.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "DetailCell") as! DetailTableViewCell cell.titleLabel!.text = movieTitle cell.overviewLabel!.text = movieOverview cell.releaseLabel.text = movieReleaseDate let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .none let movieRatingString = numberFormatter.string(from: movieRating) return cell }

DetailTableViewCell

@IBOutlet weak var coverView: UIImageView! @IBOutlet weak var posterView: UIImageView! @IBOutlet weak var releaseLabel: UILabel! @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var ratingLabel: UILabel! @IBOutlet weak var overviewLabel: UILabel!

我已经设置了情节提要,以便TableViewCell单元具有标题,发布日期和概述标签以及UIImage。我的意图是用户从viewController的表视图中选择一个电影(到目前为止,该电影仍然有效),然后被隔离到MovieDetailsViewController中,其中显示了更多详细信息

打印到控制台也已确认数据已发送到第二个视图控制器我认为:

let cell = tableView.dequeueReusableCell(withIdentifier: "DetailCell") as! DetailTableViewCell cell.titleLabel!.text = movieTitle

为了在表视图单元格中打印数据就足够了吗?

我是新手,但是我一直试图将json数据从一个视图控制器传递到UITableView中,但是我很难在表视图单元格ViewController中实际显示任何数据(...

swift uitableview cocoa-touch segue
1个回答
1
投票
我相信您的问题是您如何使用newMovies中的MovieDetailsViewController。我没有在代码中的任何地方看到用数据填充newMovies的情况。如果是这种情况,您的计数将始终为零,并且不会填充表格视图单元格。
© www.soinside.com 2019 - 2024. All rights reserved.