swift - 以编程方式初始化 ViewController

标签 swift uiviewcontroller initialization

我正在尝试在我的 Swift 应用程序中初始化一个 UIViewController,但我遇到了一个问题,我找不到任何明确的答案。

我想从 FlowCoordinator 调用它来初始化 Controller ,但是由于需要 init?(coder: NSCoder) 函数,我的初始化程序需要一个 NSCoder 对象。


MyAwesomeController()

有没有办法以不同的方式初始化 Controller ,而不需要传递 NSCoder 对象?

如果没有,我该如何创建这样一个对象来避免以下异常:

'NSInvalidArgumentException', reason: '*** -decodeObjectForKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!'

非常感谢您

最佳答案

使用这样的东西,我也包含了一个属性作为演示:

class MyAwesomeViewController: UIViewController {
    let someInt: Int

    init(someInt: Int) {
        self.someInt = someInt

        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("Storyboard are a pain")
    }
}

我喜欢以编程方式创建一切。

关于swift - 以编程方式初始化 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089897/

相关文章:

ios - 如何在 xcode ui 测试中使用 Swift 代码旋转模拟器

iOS 10、Swift 3.0、动画不流畅

ios - 在 UIViewController 之外修改 UIView 的最佳方法

c++ - 初始化模板数组

C: 如何用函数的结果初始化一个字符串?

ios - 尽管实现了所有方法, View Controller 仍不符合协议(protocol)

objective-c - ios 警告调用 uiviewcontroller 的 init 方法

ios - AVFoundation 停止

java - 我怎样才能最好地从数据库或 servlet 上下文中初始化常量?

swift - 用户单击按钮时如何取消选择 UITableView 单元格?