Я сделал просмотр таблицы статической ячейкой. С тех пор я разделил разделы на два раздела: раздел 1 для статических ячеек, раздел 2 для динамических прототипов. Однако я хочу показать ячейку динамического прототипа в табличном представлении, чтобы раздел 1 не отображался.
Раздел 1 (статическая ячейка) хорош. Обратите внимание, что это приложение отображает информацию о фильме, используя фильм API. В разделе 1 используются статические ячейки для представления подробностей фильма, а в разделе 2 используются динамические ячейки прототипов для выставления оценок пользователей. Детали фильма хорошо известны, но добавление динамического прототипа не удалось.
import UIKit
class MovieDetailViewController: UITableViewController {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var titleImage: UIImageView!
@IBOutlet weak var gradeImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var genreLabel: UILabel!
@IBOutlet weak var durationLabel: UILabel!
@IBOutlet weak var reservationRateLabel: UILabel!
@IBOutlet weak var userRatingLabel: UILabel!
@IBOutlet weak var audienceLabel: UILabel!
@IBOutlet weak var sysnopsisTextView: UITextView!
@IBOutlet weak var directorLabel: UILabel!
@IBOutlet weak var actorLabel: UILabel!
@IBOutlet weak var commentTableView: UITableView!
var movieId: String?
var movieDetail: MovieDetail?
var movieCommentList: CommentList?
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "CommentsCell", bundle: nil), forCellReuseIdentifier: "CommentsCell")
MovieAPI.requestId(id: movieId ?? "") { (movieDetail, error) in
self.movieDetail = movieDetail
DispatchQueue.main.async {
self.navigationController?.navigationBar.topItem?.title = "\(movieDetail?.title ?? "")"
self.titleLabel.text = movieDetail?.title
self.genreLabel.text = movieDetail?.genre
self.dateLabel.text = movieDetail?.date
self.durationLabel.text = ",\(movieDetail?.duration ?? 0)분"
self.reservationRateLabel.text = "\(movieDetail?.reservationRate ?? 0)"
self.userRatingLabel.text = "\(movieDetail?.userRating ?? 0)"
self.audienceLabel.text = "\(movieDetail?.audience ?? 0)"
self.sysnopsisTextView.text = movieDetail?.synopsis
self.directorLabel.text = movieDetail?.director
self.actorLabel.text = movieDetail?.actor
self.gradeImage.image = UIImage(named: "\(movieDetail?.grade ?? 0)")
self.handleImageResponse()
}
}
MovieAPI.requestComments(id: movieId ?? "") { (movieComments, error) in
}
}
func handleImageResponse() {
guard let imageURL = URL(string: movieDetail?.image ?? "") else {
return
}
MovieAPI.requestImageFile(url: imageURL, completionHandler: handleImageFileResponse(image:error:))
}
func handleImageFileResponse(image: UIImage?, error: Error?) {
DispatchQueue.main.async {
self.titleImage.image = image
}
}
}
//Dynamic prototype try!! -> failed
extension MovieDetailViewController {
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 1 {
return movieCommentList?.comments.count ?? 0
}
return super.tableView(tableView, numberOfRowsInSection: section)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellId = "CommentsCell"
let cell = self.commentTableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! CommentsCell
cell.commentsView.text = movieCommentList?.comments[indexPath.row].contents
return cell
}
}
Направление, которое я хочу, - это иметь секцию 1 (статическая ячейка) и секцию 2 (динамические прототипы) по порядку.