2011-01-13 7 views
5

Meine App verfügt über eine Tab-Leiste mit zwei verschiedenen Ansichten. Auf der ersten Registerkarte enthält die Ansicht eine Animation mit kontinuierlicher Schleife.iphone: Starten Sie die Schleifenanimation neu, nachdem die Ansicht ausgeblendet wurde und dann wieder angezeigt wird.

Wenn ich auf die zweite Registerkarte klicke, gehe zurück zur ersten, die Animation hat aufgehört. Ich weiß, dass ich es in einer viewWillAppear: Methode erneut starten könnte, aber das Problem ist größer. Insbesondere wird die Animation auch angehalten, wenn die App in den Hintergrundzustand übergeht und dann in den Vordergrund zurückkehrt. In diesem Fall wird viewWillAppear nicht beim Vordergrundübergang aufgerufen, sodass die viewWillAppear-Methode nichts bewirkt.

Was ist der beste Weg, um mit dieser Situation umzugehen?

Danke.

Antwort

4

Um die Kapselung beizubehalten, möchten Sie zu Recht nicht, dass Ihre AppDelegate wissen, welche Ansichten Animationen fortsetzen müssen. Sie können jedoch die Ansicht, die das Animationsregister für die entsprechende Benachrichtigung enthält (z. B. in der Methode init der Methode), und die Animation für sich selbst neu starten.

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
     selector:@selector(startAnimation) 
      name:UIApplicationWillEnterForegroundNotification 
     object:nil]; 

... und vergessen Sie nicht von dem Meldezentrum in der dealloc Methode deregistrieren.

+0

Viel bessere Möglichkeit, dies zu tun! Vielen Dank. –

0

Sie können festlegen, dass die Animation in der applicationWillEnterForeground-Methode von AppDelegate fortgesetzt wird. Wenn Sie im AppDelegate einen Verweis auf den View-Controller der ersten Registerkarte haben, rufen Sie einfach die ViewWillAppear-Methode des View-Controllers von AppDelegate auf.

+0

Ja, das ist, was ich dachte. Ich mochte diese Lösung nicht wirklich, weil sie mich dazu zwingt, dem App-Delegierten eine Menge View-Controller-Funktionen zur Verfügung zu stellen, die meines Erachtens verborgen bleiben sollten. (Warum sollte der App-Delegierte wissen müssen, ob meine View-Controller Animationen haben oder nicht?) Aber, das funktioniert, also denke ich, es ist der Weg, um jetzt zu gehen. –

Verwandte Themen