Если вам нужно получить реальный тип viewController взамен, просто используйте для этого дженерики.
func presentViewControllerModally<T: UIViewController>(newViewControllerName: String) -> T? {
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let newViewController = storyBoard.instantiateViewController(withIdentifier: "\(newViewControllerName)_Identifier") as? T {
self.present(newViewController, animated: false, completion: nil)
return newViewController
}
return nil
}
Затем вызовите
let myVC: MyVController = presentViewControllerModally(newViewControllerName: "MyVC")
Если вы этого не сделаетенужен правильный тип, но только UIViewController, вам не нужно приведение .