2011-07-12 19 views
3

現在、どのコントローラ/ウィンドウがapplicationDidBecomeActiveにあるのかを確認するにはどうすればよいですか?たとえば、ログイン画面(LoginViewController)で、applicationDidBecomeActiveが起動すると、それはappDelegateのログイン画面であることがわかりますか?applicationDidBecomeActive現在の画面

答えて

3

applicationDidBecomeActiveに渡されたUIApplicationオブジェクトには、windowsプロパティがあります。可視ウィンドウのNSArrayで、前から前に並べ替えられています。

あなたが前面のウィンドウを持っていたら、最初のサブビューを取得し、そのタイプをテストすることができます:私はこれにアクセスし、ちょうどサブビューにあるものを見ることができ感謝を

if ([[foregroundWindow.subviews objectAtIndex:0] class] == [LoginViewController.view class]) { 
    ... 
} 
+0

を。私はwindow.subviewsを反復しようとしていますが、どのように各サブビューが何であるかを判断しますか?対称型のメソッドがあるのか​​どうかわかりませんが、型を比較していますか? if([window.subviews objectAtIndex:0] == "LoginViewController") 私はクラス参照を見ましたが、名前の型にアクセスできるかどうかはわかりませんが、viewDelegateが表示されますが、それを取得する。 – fes

+0

私は答えを編集して詳細情報を追加しました – highlycaffeinated

+0

objectAtIndexのクラス名は常にUIViewです。私のdidFinishLaunchingWithOptionsには、[window addSubview:loginViewController.view]があります。したがって、objectViewIndexのUIViewはtrueです。これは、loginViewControllerがUIViewを拡張するUIViewControllerを拡張するためです。このUIViewの親の親が必要な場合があるように感じます。 – fes

関連する問題