2

最初のView Controllerでタイマーを実行しています。次に、別のView Controllerに切り替えたいのですが、タイマーはまだバックグラウンドで実行されています。

最初のView Controllerを完全にクリーンアップして、2番目のView Controllerを起動するにはどうすればよいですか。

SecondViewController *newView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self presentModalViewController:newView animated:NO];
[newView release];

助けてくれてありがとう!

4

2 に答える 2

1

ビューで何をしているかによって異なります。UITabBarControllerまたはUINavigationControllerを使用している場合、2 番目の View Controller を起動するときに最初の View Controller を「クリーンアップ」したくないでしょう。コントローラーでそれを処理する必要があります。したがって、これらのコントローラーのいずれかを使用している場合は、UIViewController のviewWillDisappear:メソッドを使用して、最初のビューが表示されなくなったときにタイマーを一時停止することをお勧めします。

于 2011-08-15T23:02:29.163 に答える
0

問題は、2 番目のビューをモーダル ビューとして表示したばかりであるため、最初のビューがまだメモリ内に残っている (保持されている) ことだと思います。親がまだ保持されているため、2 番目のビューを閉じることができます。

あなたがする必要があるのは、おそらくタイマーをアプリのデリゲートまたはシングルトン クラスに移動することです。次に、自由に開始/停止/一時停止する方法をいくつか用意してください。

または、2 番目のビューのviewDidLoad呼び出しでタイマーを一時停止または停止してから、 viewDidUnloadでタイマーを再開または再開することもできます。

2 番目のビュー コントローラーのparentViewControllerプロパティを使用して、親ビューを取得できます。

于 2011-08-15T22:59:50.883 に答える