aufrufen Ich habe zwei Klassen. Eine Klasse heißt ViewController
und die andere Klasse heißt TabView
.Swift kann Protokollmethode nicht über Delegat
Mein Ziel ist es, eine Funktion changeTab()
aufrufen, die in der TabView-Klasse von ViewController ist.
Irgendwie habe ich Probleme damit, weil mein Delegierter immer nil
ist.
Hier ist mein Code für Viewcontroller:
protocol TabViewProtocol: class {
func changeTab()
}
class ViewController: NSViewController {
// delegate
weak var delegateCustom : TabViewProtocol?
override func viewDidLoad() {
print(delegateCustom) // outputs "nil"
}
buttonClickFunction() {
print(delegateCustom) // outputs "nil"
delegateCustom?.changeTab() // doesn't work
}
}
Hier ist mein Code für TabView:
class TabView: NSTabViewController, TabViewProtocol {
let myVC = ViewController()
override func viewDidLoad() {
super.viewDidLoad()
myVC.delegateCustom = self
}
func changeTab() {
print("test succeed")
}
}
Kann mir jemand erklären, was ich falsch mache? - Ich bin neu für Delegierte und Protokolle ...
Sie sind immer eine neue 'ViewController' Schaffung über 'ViewController()' - dieser neue Controller hat wahrscheinlich nichts mit dem Rest der App zu tun. Sie müssen eine Verbindung zwischen den beiden Instanzen haben - keine neuen Instanzen erstellen. Im Allgemeinen sollte dies mit dem Interface Builder leicht möglich sein. – luk2302
Meine Antwort wurde aktualisiert. Dies ist, wie ich es vorher hatte ... funktioniert auch nicht – Anokrize
Und es funktioniert nicht über den InterfaceBuilder, weil ich es nicht verwende. @ luk2302 – Anokrize