Ich möchte ein Protokoll (Delegat) erstellen, die die aktuelle UIViewController.present -Funktion erfüllt.Swift-Protokoll für present() -Funktion in UIViewController
so zum Beispiel das Protokoll:
protocol PresentPopupDelegate
{
func doSomething()
func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Swift.Void)?)
}
Die Klasse, die diesem Protokoll entsprechen muss, ist:
class MyViewController:UIViewController, PresentPopupDelegate {
func doSomething()
}
und können sagen, dass ich diesen Code haben:
let delegate:PresentPopupDelegate
init() {
self.delegate = MyViewController()
}
Kompilieren wird dies zu einer Warnung sagen
führenMethode ‚vorhanden: animated: Abschluss:‘ in Protokoll ‚PresentPopupDelegate‘ nicht
implementiert
Jetzt gehe davon aus, dass der i der Grund ist, weil in der ursprünglichen Funktion einen Standardparameter auf die Vervollständigungsfunktion hat als "Null". Protokolle unterstützen jedoch keine Standardparameter.
Also zu meiner Frage: Kann ich, und wenn ja, ein Protokoll erstellen, in dem sich die UIViewController.present (...) -Funktion anpassen kann?
Guter Anruf. Und eine tolle Lektüre !!!, ich habe die Erweiterung zu UIViewController hinzugefügt. Aber jetzt bekomme ich den folgenden Fehler: Methode 'presentViewController: animiert: Vervollständigung:' von Methode bereitgestellt 'vorhanden (_: animiert: Vervollständigung :)' stimmt nicht mit dem Selektor der Anforderung überein ('vorhanden: animiert: Vervollständigung:') – giLisH
I kann das nicht reproduzieren. Sind Sie sicher, dass Ihr Protokoll genau das ist, was Sie hier aufgelistet haben? Sind Sie sicher, dass Sie das _ _ vor dem ersten Parameter nicht übersehen? –
Ich habe die Frage bearbeitet, um besser zu reflektieren, was ich versuche zu tun. Zu Ihrem q: das _ fehlt nicht von der Funktion. Danke! – giLisH