Ich bekomme den Fehler im Betreff nach dem heutigen Upgrade auf 8.3.Swift Muss einen designierten Initialisierer der Superklasse aufrufen uiinputviewcontroller
Der folgende Code funktionierte einwandfrei, kompiliert jedoch nicht mehr. Kann jemand von euch mir bitte helfen?
protocol CustomAccessoryProtocol {
func controlButtonPressed(tag:Int)
}
class CustomAccessory : UIInputViewController {
var accessoryView : UIView!
var delegate : CustomAccessoryProtocol!
@IBOutlet weak var returnButton: UIButton!
@IBOutlet weak var backButton: UIButton!
@IBOutlet weak var forwardButton: UIButton!
init(delegate: CustomAccessoryProtocol){
super.init()
self.delegate = delegate
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
let customNib = UINib(nibName: "CustomAccessory", bundle: nil)
accessoryView = customNib.instantiateWithOwner(self, options: nil)[0] as! UIView
}
@IBAction func buttonPress(sender: AnyObject) {
delegate.controlButtonPressed(sender.tag!)
}
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(accessoryView)
}
}
Ich frage mich, was der designierte Initialisierer für UIInputViewController? Nicht 'init (frame: CGRect)' nehme ich an. ? – clearlight
Ist nicht die erste Init eine Komfort-Init? Müssen Sie ein Convenience-Keyword hinzufügen? Ich habe es nicht mit einer Wissenschaft zu tun. Ich hatte einige Fälle, in denen ich mich eine Weile damit herumschlagen musste, um es herauszufinden. Basierend auf den Initializern, die Sie * haben *, nehme ich an, Sie lesen die Swift [Dokumentation] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html) zum Thema unter Irgendein Punkt ... – clearlight
Hat sich etwas in den 8.3 Dokumenten für UIInputViewController oder UIViewController geändert? – clearlight