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中实际显示任何数据(...
newMovies
中的MovieDetailsViewController
。我没有在代码中的任何地方看到用数据填充newMovies
的情况。如果是这种情况,您的计数将始终为零,并且不会填充表格视图单元格。