【问题标题】:Initialize a subclass of UIViewController with Swift?用 Swift 初始化 UIViewController 的子类?
【发布时间】:2014-06-03 08:50:49
【问题描述】:

我试图通过 UIViewController 的子类了解 Swift 中的初始化是如何工作的。我以为基本格式是这样的,但它会抛出错误......

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)   {
    //other code
    super.init(nibName: String?, bundle: NSBundle?)
}

【问题讨论】:

    标签: ios swift ios8


    【解决方案1】:

    您传递的是类型,而不是变量。您必须改为传递变量。

    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)  {
        // Initialize variables.
    
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }
    

    【讨论】:

    • 你应该总是在调用 super 之前初始化你的变量。
    【解决方案2】:

    现在应该在调用 super.init 之前初始化变量

    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)  {
    
        // Initialize variables.
    
        super.init() // as required
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用/不使用参数进行初始化。

      required init?(coder aDecoder: NSCoder) {
          super.init(coder: aDecoder)
      }
      
      // Default Initializer
      override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
          super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
      }
      
      // Initialize with value
      init(_ sender: Any?) {
          super.init(nibName: nil, bundle: nil)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-28
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多