22

UIViewControllerが現在表示されているかどうかを確認するにはどうすればよいですか?

UIViewControllersはリッスンしてNSNotificationsいます-たとえそれらが表示されていない場合でも(つまり、表示されていません)。したがって、からUIViewControllerバックグラウンドで 10 を監視できます。が に投稿および受信されたときに、現在表示されているかどうかを確認したいと思います。そうでない場合は、ブール値を設定して、ビューが表示されたときに処理されるようにします。現在表示されている場合は、すぐにテーブルを更新するなど、さらに多くのことを行います...NSNotificationsNSNotificationCenterNSNotificationUIViewController

4

8 に答える 8

21

ビューコントローラーがナビゲーションコントローラーのビューコントローラー配列のスタックの上にあるかどうかを確認する必要があります。サンプルコードは、

if (self.navigationController.topViewController == self) {
    //the view is currently displayed
}

これをメソッド内で使用してviewWillAppear、現在のビューが表示されているかどうかを確認できます。

于 2012-10-09T22:26:23.670 に答える
10

窓に取り付けられているか確認してください。そうでない場合nilは、画面に接続されている階層にあります (もちろん、画面の境界から外れているか、他のビューでカバーされているか、非表示フラグが設定されている可能性があります)。

if (myViewController.view.window) {
  // I'm attached to the window
} else {
  // not attached to the window
}
于 2012-10-09T20:56:11.617 に答える
3

これにはフラグviewWillAppearviewWillDisappearメソッドを使用できます。

于 2012-10-09T22:34:34.860 に答える
1

各 ViewController にタイトルを指定し、以下のコードで現在の ViewController のタイトルを取得します。

NSString *currentController = self.navigationController.visibleViewController.title;

Then check it by your title like this

if([currentController isEqualToString:@"myViewControllerTitle"]){

    //write your code according to View controller. 

}
于 2013-08-19T09:15:09.547 に答える
1

viewWillDisappear の通知リスナーを削除して、viewWillAppear に追加してみませんか?

編集:彼の質問を読み違えました、ごめんなさい。

推奨される回答: viewDidDisappear と viewDidAppear に独自のフラグ (BOOL) を設定します。

于 2012-10-09T20:37:17.853 に答える
0

のチェックが機能するはずだと思いますviewController.view.superview

于 2012-10-09T20:45:02.683 に答える