重複の可能性あり:
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
}