Я создаю приложение с помощью VIP Clean, и у меня возникают проблемы с вызовом HomeViewController на LoginRouter.
Я пробовал это несколькими способами, создавая экземпляр homeviewcontroller и передавая информацию об инициализации HomeViewController следующим образом: let homeViewController = HomeViewController(interactor: HomeInteractor(repository: HomeRepository(), user: user), router: HomeRouter(navigationController: navigationController), presenter: HomePresenter())
И я получаю то же сообщение, и я не знаю, как это исправить ...
ЛогинРоутер:
import UIKit
@objc protocol LoginRouting{
func routeToHome(login:LoginViewController, user: UserRealm)
}
protocol LoginDataPassing{
var dataStore: LoginDataStore? { get }
}
class LoginRouter: NSObject, LoginRouting {
//MARK: - Navigation init
weak var viewController: LoginViewController?
var dataStore: LoginDataStore?
var navigationController = UIViewController()
init(navigationController: UIViewController){
self.navigationController = navigationController
}
//MARK: - Routing and Navigations
func routeToHome(login: LoginViewController, user: UserRealm) {
login.dismiss(animated: true, completion: nil)
let home =
UIStoryboard(name:"Main",bundle:nil).instantiateViewController(identifier:
"HomeViewController")
UIApplication.topViewController()?.present(home, animated: true, completion: nil)
}
}
HomeViewController:
import UIKit
protocol HomeDisplayLogic: class{
func displaySomething(viewModel: Home.ViewModel)
}
class HomeViewController: UIViewController, HomeDisplayLogic {
@IBOutlet weak var usernameLb: UILabel!
@IBOutlet weak var userAccontLb: UILabel!
@IBOutlet weak var userBalance: UILabel!
@IBOutlet weak var tableview: UITableView!
var router: HomeRouter?
private var interector: HomeInteractor
private var presenter: HomePresenter
private var tableViewDataSource: HomeDataSource?
init(interactor: HomeInteractor, router: HomeRouter, presenter: HomePresenter) {
self.interector = interactor
self.interector.presenter = presenter
self.presenter = presenter
self.router = router
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - View lifecycle
override func viewDidLoad() {
populateInformations()
setupView()
}
private func setupView() {
presenter.viewController = self
HomeDataSource.setupHome(tableView: tableview)
tableViewDataSource = HomeDataSource(presenter: presenter)
tableview.dataSource = tableViewDataSource
tableview.delegate = tableViewDataSource
}
// MARK: - PopulateInformations
func populateInformations(){
let request = Home.Request(userId: interector.user.userId ?? "1.0")
interector.getInfoStatements(request: request)
}
func displaySomething(viewModel: Home.ViewModel) {
}
}
Когда я звоню домой, я получаю это сообщение: Fatal error: init(coder:) has not been implemented: file
может кто-нибудь объяснить мне, что может быть не так или как правильно передавать информацию от одного viewController к другому?