Добрый день. Подскажите как правильно для паттерна mvvm делать переход по нажатию на ячейку TableView.
Есть viewModel и TableViewController. TableViewController “общается” c viewModel через протокол.
Сейчас метод didSelectRowAt indexPath выглядит так
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = NextViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
Правильно будет если я сам NextViewController буду отдавать через протокол?
Например:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let viewModel = viewModel, let vc = viewModel.getNextVC(indexPath: indexPath) else { return }
self.navigationController?.pushViewController(vc, animated: true)
}
Соответственно в протоколе будет так
protocol ViewModelProtocol {
func getNextVC(indexPath: IndexPath) -> UIViewController?
}
И во viewModel и протокол придётся добавить UIKit
?