View Hierarchy/ Managmeent

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • View Hierarchy/ Managmeent

    Hallo zusammen,

    ich möchte nach dem Methoden-Aufruf

    Quellcode

    1. //call in viewcontroller b
    2. self.dismissViewControllerAnimated(true, nil)
    in Controller A darauf reagieren.
    Nach der Dokumentation Apple Documentation müsste es viewWillAppear oder spätestens viewDidLoad sein.
    In keines der Status kann ich auf das dimiss von ViewController B reagieren.

    Was mache ich falsch?

    Viele Grüße
    lernen, lernen, lernen :)
  • imoney91 schrieb:

    Hallo zusammen,

    ich möchte nach dem Methoden-Aufruf

    Quellcode

    1. //call in viewcontroller b
    2. self.dismissViewControllerAnimated(true, nil)
    in Controller A darauf reagieren.
    Nach der Dokumentation Apple Documentation müsste es viewWillAppear oder spätestens viewDidLoad sein.
    In keines der Status kann ich auf das dimiss von ViewController B reagieren.

    Was mache ich falsch?

    Viele Grüße
    Wie zeigst du Controller B denn an? Also wie wird er geladen?
    Man kann alles schaffen. Man muss es nur wollen ;)
    www.regetskcob.github.io
  • Ich navigiere von Controller A mit

    Quellcode

    1. self.performSegueWithIdentifier(...)

    erfolgreich auf Controller B.

    Mit

    Quellcode

    1. self.dismissViewControllerAnimated(true, nil)
    erfolgt dann auch der Rücksprung in den ViewController A.

    Jedoch springt er in keines der Status hinein.
    lernen, lernen, lernen :)
  • –viewWillAppear: wird eigentlich immer aufgerufen, wenn das View in den Vordergrund kommt. Also auch beim Wechsel des Controllers.
    –viewDidLoad: hingegen wird nur beim Erstellen des Views durch den ViewController aufgerufen.

    War zumindest so in Objective–C und ich sehe keinen Grund, warum das in Swift anders sein sollte.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • du benutzt dismissViewControllerAnimated falsch


    Apple schrieb:

    Dismisses the view controller that was presented modally by the view controller.

    der ViewController A muss den ViewController B ausblenden
    am besten setzt du den ViewController A als Delegate von B
    wenn der User im ViewController B dafür sorgt das der ViewController ausgeblendet werden soll, teilt der ViewController B seinem Delegate also ViewController A mit das er ausgeblendet werden soll
    A schießt B dann weg

    für dismissViewControllerAnimated gibt es ja eigentlich auch einen completionBlock, wenn der ausgeblendet wurde, kannst du im completionBlock drauf reagieren und was machen
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • imoney91 schrieb:

    Nach der Dokumentation Apple Documentation müsste es viewWillAppear oder spätestens viewDidLoad sein.
    Wenn schon umgekehrt, siehe Marcos Beitrag. Verglichen mit der Erdgeschichte ist viewDidLoad das Holozän des Viewcontroller-Daseins. ;)

    Marco Feltmann schrieb:

    –viewWillAppear: wird eigentlich immer aufgerufen, wenn das View in den Vordergrund kommt. Also auch beim Wechsel des Controllers.
    Im Allgemeinen ist das nicht richtig. Wenn der Viewcontroller als Formsheet oder generell nicht seitenfüllend präsentiert wird, werden die Appear- und Disappera-Methoden des präsentierenden Controllers in der Regel nicht aufgerufen. Das ist bei Universal-Apps nervig, weil sich hier das Tablet und das Telefon z. B. bei Formsheets unterschiedlich verhalten.

    Über ein eigenes Delegate-Protokoll lässt sich ohne viel Aufwand eine saubere Implementierung realisieren.
    „Meine Komplikation hatte eine Komplikation.“