我有一个用Main.storyboard
设计的视图控制器,名为ProfileViewController
,也是该名称的对应类。
我可以像这样实例化viewController,
UIStoryboard(name: "SignUp", bundle: nil).instantiateViewController(withIdentifier: "ProfileViewController") as? ProfileViewController
但是我想做的是这样实例化视图控制器
let profileViewController = ProfileViewController(/*argument list*/)
答案 0 :(得分:0)
Storyboard的视图控制器必须从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
}
}
请注意,如果要使用真正的初始化程序,则不能使用情节提要。您可以使用设计的视图控制器的视图并将其分配给初始化程序中的视图,但是您将失去其他视图控制器设置。
extension ProfileViewController {
convenience init(argument: Any) {
self.init()
self.view = UIStoryboard(name: "SignUp", bundle: nil).instantiateViewController(withIdentifier: "ProfileViewController").view
self.argument = argument
}
}