2017-03-22 6 views
1

Zunächst möchte ich erklären, was genau das Szenario, das ich archivieren möchte.Aktualisierung von Steckdosen nach dem Schließen einer ViewController

Mein rootviewcontroller -> FirstViewController -> DetailViewController -> Detail2ViewController und dann zurück zu FirstViewController mit einem Label von einer Funktion in FirstViewController aktualisiert.

(Angenommen, -> bedeutet einen Knopfdruck)

Jetzt benutze ich diese die Funktion aus den letzten Viewcontroller zu nennen:

var go = FirstViewController() 

self.go.get() //get is the function that updates the textfield text. 

self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil) 

Jetzt drucke ich die Zeichenfolge Ich wollte das sein neuer Text meines Labels und es funktioniert, aber wenn ich diese Zeile verwenden:

self.label.text = newone // newone is the new string 

ich habe einen Absturz mit diesem Protokoll:

fatal error: unexpectedly found nil while unwrapping an Optional value

Natürlich ist die gleiche Funktion funktioniert, wenn ich die FirstViewController erste erreichen und ich habe auch versucht, eine Zeichenfolge zu verwenden, um den Beschriftungstext wie folgt einzufügen:

self.label.text = "hello" 

Vielen Dank im Voraus.

EDIT:

Ich habe vergessen, Navigationssteuerungen zu setzen.

NavContr -> RootViewController -> FirstViewController -> DetailViewController -> NavContr -> Detail2ViewController

+0

Wie die folgende Antwort sagt, 'var go = FirstViewController()' ist falsch, Sie müssen etwas wie 'los gehen = self.presentingViewController! .presentingViewController! wie! FirstViewController '(auch nicht empfohlen, benutze stattdessen delegate) – Tj3n

+0

@ Tj3n danke für deinen Kommentar Ich habe versucht, es mit Delegierten zu tun, aber ich konnte meine Frage nicht mit Nav-Controllern bearbeiten Kannst du mir ein Beispiel mit dem neuen Szenario geben? –

Antwort

1

var go = FirstViewController(). Jedes Mal wird dadurch eine neue Instanz von FirstViewController() erstellt und Ihre bereits initialisierte Instanz viewController wird nicht verwendet. Berichten zufolge wird das Etikettnull sein, folglich erhalten Sie fatal error. Versuchen Sie, indem Sie Ihr bereits initialisiertes Objekt vom Stapel holen (wenn Sie es verwenden und es eines gibt).

+0

Danke für die Antwort können Sie mir ein Beispiel geben? –

Verwandte Themen