I am programming on swift language and I want to reuse this code passing the identifier as String and the page as the view controller name, but I am getting the error Use of undeclared type 'page', how can I achieve this? thanks
func toReuseSession(identifier: String, **page**: UIViewController){
let mainStoryBoard = UIStoryboard(name: "Main", bundle: Bundle.main)
guard let mainVC = mainStoryBoard.instantiateViewController(withIdentifier: identifier) as? **page** else {
return
}
mainVC.modalPresentationStyle = .fullScreen
present(mainVC, animated: true, completion: nil)
}
According to your function, You should be declared a generic type of UIViewController in such a way you can achieve your output. I have modified your function in a correct syntax, You can use that:-
func toReuseSession<T:UIViewController>(identifier: String, page: T){
let mainStoryBoard = UIStoryboard(name: "Main", bundle: Bundle.main)
guard let mainVC = mainStoryBoard.instantiateViewController(withIdentifier: identifier) as? T else {
return
}
mainVC.modalPresentationStyle = .fullScreen
present(mainVC, animated: true, completion: nil)
}
Now you can call your function like that:-
self.toReuseSession(identifier: "NewPasswordViewController", page: NewPasswordViewController())
// "NewPasswordViewController" is in my case when I was checking it's working. You can change whatever ViewController wants to present.