Ich versuche lable eines View-Controller von einem anderen View-Controller zu ändern eigenes Protokoll verwenden, aber seine delegierte Methode ist nichtBenutzerdefinierte Protokoll Delegatmethode nicht Aufruf
ViewController3 Code aufgerufen werden:
wenn ich schließen klicken Sie auf Button es ist Delegate-Methode wird nicht in meinem ViewController2 aufgerufen.
protocol ViewController3Delegate: class {
func changeLable(_ text: String)
}
class ViewController3: UIViewController {
weak var delegate: ViewController3Delegate?
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func btnCloseAction(_ sender: Any) {
delegate?.changeLable("fillter applied")
self.dismiss(animated: true, completion: nil)
}
}
ViewController2 Code:
class ViewController2: UIViewController,ViewController3Delegate {
@IBOutlet weak var lblReport: UILabel!
let VC3 = ViewController3(nibName: "ViewController3", bundle: nil)
override func viewDidLoad() {
super.viewDidLoad()
VC3.delegate = self
}
func changeLable(_ text: String) {
print("delegate called")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Jeder weiß, wo ich falsch bin, schlagen mir bitte etwas Lösung
definieren, wie Sie nicht hinzufügen 'VC3.view' als Unteransicht, ich vermute, Sie haben zwei' ViewController3' Instanzen. On als Ihre Eigenschaft in 'ViewController2' (die Sie nicht sehen) und eine, für die wir den Code nicht sehen. Vielleicht vom Storyboard instanziiert. 'ViewController2'' 'btnCloseAction' 'wird aufgerufen, aber sein' Delegat' ist nicht gesetzt. – shallowThought
@ShallowThought, was die Lösung ist, hatte ich viele Alternativen versucht, aber es funktioniert nicht. –
Haben Sie meinen Verdächtigen verstanden? – shallowThought