Ios 通过扩展添加时,UIViewController的便利初始化不出现
我希望通过扩展向UIViewController添加一个方便的initilizer,因为我希望所有UIViewController/UIViewController子类都可以访问它。但是当我添加它时,它不会出现在可用initilizers的下拉列表中,如果我尝试使用它,我会得到一个错误,在调用中说Ios 通过扩展添加时,UIViewController的便利初始化不出现,ios,swift,Ios,Swift,我希望通过扩展向UIViewController添加一个方便的initilizer,因为我希望所有UIViewController/UIViewController子类都可以访问它。但是当我添加它时,它不会出现在可用initilizers的下拉列表中,如果我尝试使用它,我会得到一个错误,在调用中说缺少参数标签'coder: extension UIViewController { convenience init(test: String) { self.init(nibName:
缺少参数标签'coder:
extension UIViewController {
convenience init(test: String) {
self.init(nibName: nil, bundle: nil)
print(test)
}
let testController = TestController(test: "Hello World!") // Missing argument label 'coder:' in call
有什么办法可以让它发挥作用吗
我可以将便利initilizer添加到其他UIKit类中,并使它们显示为可用的init。工作正常,因为您可以检查并匹配代码,可能需要删除派生数据:
extension UIViewController {
convenience init(test: String) {
self.init(nibName: nil, bundle: nil)
print(test)
}
}
class SecondViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textf: UITextField!
var doubleValue: Double?
override func viewDidLoad() {
super.viewDidLoad()
let testController = SecondViewController(test: "ffwfew")
print(testController)
}
}
看起来很好,试着清洁和建造是的,在操场上也做了同样的事情,并按预期工作。发现了问题。我有一个剩余的
required init
,它仍然在我的视图控制器中,因此编译器迫使我进行检查。是的,你必须删除它