ios - 如何使用 Storyboard 中的 View 以编程方式创建 UIViewController

标签 ios swift uiviewcontroller

我在 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/

相关文章:

ios - 如何给UIButton设置3d效果

android - React Native TouchableHighlight忽略第一次点击事件

ios - 为什么UIToolbar和UITabBar中的项目属性是(复制)属性,而不是(保留)属性?

ios - 在表格 View 右上角设置图像

swift - 在 Swift 中将字符串转换为 Int

ios - 核心数据 : unrecognized selector sent to instance

ios - 在两个 UiViewController 和 UIView 之间实现拖动和滑动过渡?

ios - 从动态表格单元格链接到特定的 View Controller

ios - 无法在 swift iOS 8 扩展中转换 UIImage

iphone - 委托(delegate)和协议(protocol)无法正常工作