我创建了一个自定义UINavigationController
:
class NavigationController: UINavigationController {
override public init(rootViewController: UIViewController) {
super.init(rootViewController: rootViewController)
}
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
}
然后我创建一个子类:
final class CustomNavigationController: NavigationController {}
但是我遇到了运行时错误:
严重错误:对类'CustomNavigationController'使用未实现的初始化程序'init(nibName:bundle:)'
有人告诉我发生这种情况是因为这些init()
就像便捷初始化程序一样,为了避免崩溃,我必须在子类中实现它们。
由于我尝试过一些简单的事情,所以我不明白这句话:
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
convenience init(tenYearsOldNamed name: String) {
self.init(name: name, age: 10)
}
}
class SubPerson: Person {}
let ben = SubPerson(tenYearsOldNamed: "Ben")
无论我是否覆盖init(name, age)
中的SubPerson
,此方法都可以正常工作。
因此,我真的不了解那些UINavigationController
实例所发生的事情。
感谢您的帮助。