swift - 使用自定义初始化程序 swift 以编程方式实例化和推送 View Controller

标签 swift uiviewcontroller initialization xib

我想像这样快速地呈现一个详细 View Controller

let detailController = MyDetailUIViewController(nibName: "MyDetailUIViewController", bundle: NSBundle.mainBundle(), data:myData)
self.navigationController?.pushViewController(detailController, animated:true)

我遇到的问题是如何为 MyDetailViewController 编写初始化程序:

class MyDetailUIViewController: UIViewController {

private var data: MyData

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!, data:MyData) {
    self.data = data
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

我收到一个错误,表明我的数据属性未在 super.init 调用时初始化。谁能解释我如何才能做到这一点?我确信我可以将我的数据属性设置为可选并在初始化后将其传递,但​​肯定有一种方法可以实现此目的。

最佳答案

如果您将 data 变量声明为非可选,则必须确保所有 init 方法都对其进行初始化。在你的类(class)中情况并非如此,因为

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

不会初始化您的数据

关于swift - 使用自定义初始化程序 swift 以编程方式实例化和推送 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611224/

相关文章:

ios - 如何将动画添加到自定义按钮并在点击按钮时调用?

objective-c - 重用 View Controller

arrays - 如何在Julia中定义DataFrames的空数组?

swift - 在表格 View 单元格中键入时键盘会覆盖 TextView

ios - Firebase 连接管理器应该只返回一个结果

swift - 文档类型关联在应用程序未运行时导致应用程序崩溃

c++ - POD的零初始化

ios - 尝试在其 View 不在窗口层次结构中的 UIViewController 上呈现 GKGameCenterViewController

ios - 从一个 VC 切换到另一个时在 View Controller 中保留数据

c - 将 C 或 C99 中的结构数组初始化为所有相同的值