Ich bin ziemlich neu in die Programmierung mit Xcode/Swift an vorbei und ich bin ein kleines Problem.Delegieren ist immer null Info zwischen 2x ohne Viewcontrollers segue
Ich möchte Informationen von einem ViewController zu einem zweiten ViewController mit Delegate und ohne Überleitung senden. Ich habe viel darüber gelesen und festgestellt, dass die gängigste Lösung darin besteht, die "Instanz" .delegate = self in ViewDidLoad zu verwenden, aber das funktioniert einfach nicht für mich.
- Definition der App -
Es ist ziemlich einfach. Auf dem ersten ViewController habe ich eine Schaltfläche und ein Label. Die Schaltfläche öffnet den zweiten ViewController mit einem textField und einem Button. Der Button sendet, was im textField ist, an den ersten ViewController, um das Label zu aktualisieren.
- Code -
Dies ist der Code für den ersten Viewcontroller ist:
class ViewController: UIViewController, clickedButtonDelegate {
@IBOutlet weak var Label: UILabel!
func didClickedButton(text: String) {
Label.text = text
}
var secondView = SecondViewController()
override func viewDidLoad() {
super.viewDidLoad()
secondView.delegate = self
}
}
Dies ist der Code für den zweiten Viewcontroller:
protocol clickedButtonDelegate {
func didClickedButton(text: String)
}
class SecondViewController: UIViewController {
@IBOutlet weak var introducedText: UITextField!
var delegate : clickedButtonDelegate!
@IBAction func sendData(_ sender: Any) {
if delegate != nil {
let information:String = introducedText.text!
delegate!.didClickedButton(text: information)
dismiss(animated: true, completion: nil)
self.navigationController?.popViewController(animated: true)
}
}
}
diesen Code mit nichts passiert weil der Delegat in SecondViewController immer null ist.
Könnten Sie bitte helfen?
Vielen Dank im Voraus!
Wann und wie drücken Sie SecondViewController? Könnten Sie bitte auch diesen Code zur Verfügung stellen? –
Diese Zeile: 'var secondView = SecondViewController()' erstellt man eine Instanz von 'SecondViewController'. Sind Sie mit ** dieser ** Instanz verbunden? Oder Sie erreichen "SecondViewController" über Storyboard-Segmente?Wenn das der Fall ist, müssen Sie einen Zeiger auf ** diese ** Instanz erstellen und vermeiden 'var secondView = SecondViewController()' – Honey
Siehe [diese Antwort] (https://stackoverflow.com/a/31934786/ 5175709) und das Video, das es mit – Honey