View neu zeichnen

  • Ich möchte bequem und sicher über die Straße gelangen.
    Im Moment mache ich das so:

    Quellcode

    1. Passanten auf der gegenüberliegenden Straßenseite um Hilfe bitten
    2. Gerüst mit seiner Hilfe aufbauen
    3. Über das Gerüst kletternd die Straße überqueren

    Ist bestimmt nicht die schönste Art, vielleicht geht es auch anders?
    Zebrastreifen möchte ich nicht.



    :rolleyes:
    «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
  • Natürlich tut es das nicht. Das View sollte ja auch nicht permanent und immer wieder geladen werden. Frisst viel zu viel Performance.
    Insofern solltest du gegebenenfalls die Programmlogik überdenken.
    «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
  • AR.DDev schrieb:

    Quellcode

    1. [theView removeFromSuperview];
    2. theView = nil;
    3. [self.view addSubview:theView];

    Was passiert, wenn Du nil als Subview hinzufügst? Möchtest Du den View neu laden oder die View-Hierarchie verändern?

    AR.DDev schrieb:

    setNeedsDisplay ruft die Methode viewDidLoad nicht auf.

    Was macht denn die Methode setNeedsDisplay? Möchtest Du den View neu laden oder neu zeichnen?

    Warum möchtest Du den View überhaupt neu laden?
    „Meine Komplikation hatte eine Komplikation.“
  • Die Frage ist doch eigentlich "Warum" willst du ein view komplett neu laden? Es gibt überhaupt keinen Grund, da man in viewWillAppear() oder viewDidAppear() etc alles so ändern kann wie man es gerne mag.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    AR.DDev schrieb:

    Quellcode

    1. [theView removeFromSuperview];
    2. theView = nil;
    3. [self.view addSubview:theView];

    Was passiert, wenn Du nil als Subview hinzufügst? Möchtest Du den View neu laden oder die View-Hierarchie verändern?

    AR.DDev schrieb:

    setNeedsDisplay ruft die Methode viewDidLoad nicht auf.

    Was macht denn die Methode setNeedsDisplay? Möchtest Du den View neu laden oder neu zeichnen?

    Warum möchtest Du den View überhaupt neu laden?
    Wenn ich theView = nil als Subview hinzufüge, wird dieser neu geladen. So wie ich es möchte.
    Eigentlich nur neu laden, dadurch wird der View ja aber auch neu gezeichnet.
    Ich möchte das wegen dem blöden Backgrounding. Ich möchte schon, dass meine App im Hintergrund läuft, aber unter gewissen Umständen muss in der applicationWillEnterForeground:-Methode der View neu geladen werden.
  • AR.DDev schrieb:

    Ich möchte das wegen dem blöden Backgrounding. Ich möchte schon, dass meine App im Hintergrund läuft, aber unter gewissen Umständen muss in der applicationWillEnterForeground:-Methode der View neu geladen werden.


    Da halte ich jetzt einfach mal eine Kiste Bier dagegen, daß das nue geladen werden MUSS.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • AR.DDev schrieb:

    Wenn ich theView = nil als Subview hinzufüge, wird dieser neu geladen. So wie ich es möchte.

    ...und wenn Du die Zebrastreifen quer zeichnest, wird der View auch neu geladen.

    Das ist doch Mumpitz. Wer muss denn den View neu laden? Der View?

    AR.DDev schrieb:

    Eigentlich nur neu laden, dadurch wird der View ja aber auch neu gezeichnet.
    Möchtest Du den View jetzt neu zeichnen oder neu laden?

    AR.DDev schrieb:

    Ich möchte das wegen dem blöden Backgrounding. Ich möchte schon, dass meine App im Hintergrund läuft, aber unter gewissen Umständen muss in der applicationWillEnterForeground:-Methode der View neu geladen werden.
    Warum musst Du einen View neu laden, nur weil die App wieder in den Vordergrund kommt?
    „Meine Komplikation hatte eine Komplikation.“
  • AR.DDev schrieb:

    Werden viewWillAppear bzw. viewDidAppear denn auch aufgerufen, wenn die App aus dem Multitasking aufwacht?

    Soweit ich weiß wird in der Doku nur erwähnt, dass die Methoden kurz bevor bzw. kurz nach Sichtbarwerden des Views aufgerufen werden. In den Implementierungen sollte nur ein einmaliges Setup gemacht werden, mehr nicht. Darüber, ob die Methoden beim Aufwachen aufgerufen werden, sollte man keine Annahmen machen, unabhängig davon, ob das in der jetzigen iOS-Version passiert oder nicht. Alles andere kann Dir schnell auf die Füße fallen, wenn Apple das Verhalten in einer kommenden Version ändert.

    In den WWDC-Videos gibt's eine nette Session darüber, wie man seine Anwendungen zukunftssicher macht, sehr sehenswert. Regel Nummer 1: Gehe nicht von einem bestimmten, undokumentierten Verhalten aus.

    Das haben ja schon andere hier gesagt: Die ganze Sache mit dem Viewraus- und -reinfummeln riecht nach Designproblem. Wenn sich die Implementierung an die Vorgaben hält, sollte das nicht nötig sein.
    Multigrad - 360°-Produktfotografie für den Mac
  • mattik schrieb:

    Das haben ja schon andere hier gesagt: Die ganze Sache mit dem Viewraus- und -reinfummeln riecht nach Designproblem.

    Die Sache mit der Programmlogik bzw. dem Designproblem hatten wir schon beim Thema UserDefaults rausschreiben.

    @AR.DDev: So wie Du die Probleme angehst hat das etwas von einem dickköpfigen Kind - weil nicht sein kann, was nicht sein darf. (@macmoonshine: Meine "Normative Kraft des Faktschen"-Phase habe ich schon laaange hinter mir ;)). Du wirst immer und immer wieder gegen die Wand laufen, wenn Du in Dein Software-Design nicht die Konzepte einbeziehst, die hinter der Methoden stecken, die Du verwenden möchtest. Oder eben auch mal von der ersten Implementierungs-Idee nach intensiver Recherche ab gehst.

    Und Du wirst Dir ebenfalls immer wieder ein entsetztes "Wie bitte?!" hier im Forum einsammeln, wenn Du Deine Fragen stellst und ein "Dann eben nicht!", wenn Du partout nicht akzeptieren möchtest, wenn Erfahrenere als Du (und ich) Dir sagen, dass Du gerade furchtbar neben der Spur läufst. Refactoring eines Konzeptes, das einfach Käse ist, kann etwas Befreiendes haben. Ich habe meine WiFi-Lib ich glaube drei mal neu geschrieben. Denn zwei Mal war ich auf dem Holzweg und habe es erkannt.
  • Was spricht dagegen, das Zeug welches du in der viewWillAppear: machst in eine eigene Methode zu packen und diese Methode sowohl in der viewWillAppear: als auch beim zurückkehren aus dem Background aufzurufen?
    Widgetschmie.de • Life is too short for gadgets