特定の UIViewController のビューが現在表示されているかどうかを確認するにはどうすればいいですか? [重複] 質問する

特定の UIViewController のビューが現在表示されているかどうかを確認するにはどうすればいいですか? [重複] 質問する

重複の可能性あり:
UIViewController のビューが表示されているかどうかを確認する方法

私は、ネットワークから入ってくるデータの一定のストリームを処理し、ユーザーがそのデータを表示するためのさまざまな UIView を提供するアプリを開発しています。

ネットワークからの受信ストリームに基づいて特定のモデル データが更新されると、関連付けられた UIViewController または UITableViewController にアクセスし、それに対して -setNeedsDisplay (UIViewController の場合) または -reloadData (UITableViewController の場合) を実行します。

特定の UIView が現在表示されているかどうか (単に読み込まれているだけでなく) をチェックして、ユーザーが現在その UIView を見ている場合にのみ -setNeedsDisplay または -reloadData を実行する方法はありますか? ユーザーが現在見ていないビューで -setNeedsDisplay または -reloadData を呼び出すと、処理能力が無駄になり、バッテリー寿命にも良くないと思われます。ユーザーが最終的に以前に更新されたビューに切り替えるときに、-viewWillAppear で -setNeedsDisplay または reloadData を実行する方が理にかなっています。

ありがとう

ベストアンサー1

少し調べた後、ここに投稿された別の質問でこの答えを見つけました...これが最善の方法のようです...

ビューが現在表示されている場合、ビューの window プロパティは nil 以外なので、ビュー コントローラのメイン ビューを確認します。

if (viewController.isViewLoaded && viewController.view.window){
    // viewController is visible
}

おすすめ記事