5

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

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

3 回答 3

10

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

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

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
于 2014-06-03T09:13:28.707 回答
4

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

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)  {

    // Initialize variables.

    super.init() // as required
}
于 2014-06-09T19:27:19.600 回答
0

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

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)
}
于 2020-10-03T07:23:52.083 回答