IOSはのUIViewControllerが現在表示されているかどうかを判断します

私の通常のアプローチは、それが使用されている状態であるかどうかを決定するためにライフサイクル・ビュー・コントローラに基づいています。 

例インスタンスのisVisible = YES内部-ViewWillAppearのisVisibleでブール変数セット; -ViewWillDisappearここでのisVisible = NO;及び実施例の方法によって必要とされる場合

最近、同僚が次のように巧妙な方法がある共有します。http://edsioon.me/if-uiviewcontroller-is-display/

 
   

UIViewControllerが表示されているかどうかを判断します

 
    
   
 
   

いくつかのケースでは、のViewControllerは現在、このような背景のネットワーク要求のエラーとして、表示されている、我々は唯一のページポップにユーザーを促したいかどうかを判断する必要性は、ユーザーを減らし、ユーザーはポップ、別のインターフェイスにないジャンプしなければならない要求を、開始しました干渉。

現在表示されているのUIViewオブジェクトなら、それは間違いなく、プロパティウィンドウのnull以外の値です。ウィンドウが表示されない場合、公式文書はUIViewのプロパティ値を説明するために、単純なテストの後、ほとんどのケースでのUIViewが表示されていないが、窓はのUIViewControllerは、現在表示されているかどうか、この判断に応じて、空です。UIViewControllerビューのプロパティにアクセスするときしかし、それは、それが不要である(この時はまだロードされていない場合)、ビューがロードされている可能性があり、また予期しない問題が発生することがあります。したがって、プロパティビューにアクセスする前に、それはこれらの問題を回避するためにisViewLoadedプロパティをチェックすることをお勧めします。

以下のサンプルコードは、この方法は、後の呼び出しのためのUIViewControllerに延長のisVisibleを宣言する

UIViewControllerが表示されているかどうかを

 

注:UIViewのの公式ドキュメントは、唯一のビューがウィンドウに追加されていない場合、ウィンドウのプロパティが空であることを示す;しかし、ウィンドウがnilのとき、現在のビューが表示されていない言及しませんでした。ほとんどのニーズを満たすことができ、上述の簡単な方法で検出されたデモでは、それは簡単なテストを使用することをお勧めします!

母はすぐに使用することができ、一般的には、特別な場合ではないので、低感じるが、この方法は、ああ!!!ビューコントローラの下で実用的な条件であることに注意してください。

私は、クラスメソッドが笑呼び出すために、より便利で書きました

次のように:

+(BOOL)isCurrentViewControllerVisible:(のUIViewController * )のViewController 
{ 
    リターン(viewController.isViewLoaded && viewController.view.window)。
}

私は比較はそれを比較するためにされている背の高いとメソッドのライフサイクルビューを区別するために応じて判断することにしたいですか?答えは明日

ます。https://www.cnblogs.com/someonelikeyou/p/4331286.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33691598/article/details/94538133