Ao terminar de implementar a segunda aula do módulo 3 do curso iOS Layout parte 2, estou recebendo esse erro bem estranho sempre que clico em uma célula da TableView de viagens. O correto seria ao clicar, ir para tela de detalhes. Qual seria a solução para esse problema?
Segue o código da minha ViewControler
//
// ViewController.swift
// AluraViagens
//
// Created by Jean Camargo on 23/03/22.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var viagensTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
configuraTableView()
view.backgroundColor = UIColor(red: 30.0/255.0, green: 59.0/255.0, blue: 119.0/255.0, alpha: 1)
}
func configuraTableView() {
viagensTableView.register(UINib(nibName: "ViagemTableViewCell", bundle: nil), forCellReuseIdentifier: "ViagemTableViewCell")
viagensTableView.register(UINib(nibName: "OfertaTableViewCell", bundle: nil), forCellReuseIdentifier: "OfertaTableViewCell")
viagensTableView.dataSource = self
viagensTableView.delegate = self
}
}
extension ViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return secaoDeViagens?.count ?? 0
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return secaoDeViagens?[section].numeroDeLinhas ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let viewModel = secaoDeViagens?[indexPath.section]
switch viewModel?.tipo {
case .destaques:
guard let celulaViagem = tableView.dequeueReusableCell(withIdentifier: "ViagemTableViewCell") as? ViagemTableViewCell else {
fatalError("error to create ViagemTableViewCell")
}
celulaViagem.configuraCelula(viewModel?.viagens[indexPath.row])
return celulaViagem
case .ofertas:
guard let celulaOferta = tableView.dequeueReusableCell(withIdentifier: "OfertaTableViewCell") as? OfertaTableViewCell else {
fatalError("error to create OfertaTableViewCell")
}
celulaOferta.configuraCelula(viewModel?.viagens)
return celulaOferta
default:
return UITableViewCell()
}
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let detalheController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DetalhesViewController")
navigationController?.pushViewController(detalheController, animated: true)
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
let headerView = Bundle.main.loadNibNamed("HomeTableViewHeader", owner: self, options: nil)?.first as? HomeTableViewHeader
headerView?.configureView()
return headerView
}
return nil
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 0 {
return 300
}
return 0
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone ? 400 : 475
}
}