我在 Main.storyboard
中设计了一个名为 ProfileViewController
的 View Controller ,还有一个相应的类名。
我可以像这样实例化 viewController,
UIStoryboard(name: "SignUp", bundle: nil).instantiateViewController(withIdentifier: "ProfileViewController") as? ProfileViewController
但是我想做的是像这样实例化 View Controller
let profileViewController = ProfileViewController(/*argument list*/)
最佳答案
Storyboard的 View Controller 必须从 Storyboard
实例化。如果您需要自定义构造函数(如初始化程序),您可以像这样定义一个简单的构造函数:
extension ProfileViewController {
static func new(argument: any) -> ProfileViewController {
let vc = UIStoryboard(name: "SignUp", bundle: nil).instantiateViewController(withIdentifier: "ProfileViewController") as! ProfileViewController
vc.argument = argument
return vc
}
}
请注意,如果您想使用真正的初始化程序,则不能使用 Storyboard。您可以使用设计的 View Controller 的 View 并将其分配给初始化程序中的 View ,但您将丢失其他 View Controller 设置。
extension ProfileViewController {
convenience init(argument: Any) {
self.init()
self.view = UIStoryboard(name: "SignUp", bundle: nil).instantiateViewController(withIdentifier: "ProfileViewController").view
self.argument = argument
}
}
关于ios - 如何使用 Storyboard 中的 View 以编程方式创建 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56991987/