我正在尝试使用 UIViewController 的子类来了解 Swift 中的初始化是如何工作的。我以为基本格式是这样的,但它会抛出错误......
init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
//other code
super.init(nibName: String?, bundle: NSBundle?)
}
您正在传递类型,而不是变量。您必须改为传递变量。
init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
// Initialize variables.
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
现在应该在调用 super.init 之前初始化变量
init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
// Initialize variables.
super.init() // as required
}
您可以使用/不使用参数进行初始化。
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)
}