10

たとえば、viewControllerのビューがviewHierarchyにあり、ダウンロードを終えたばかりの場合は、すばやく更新したいと思います。self.viewがviewHierarchyにない場合は、更新を延期したいと思います。

ブール変数を追加してそれを示し、viewWillAppearとviewWillDisappearに配置できると思います。

また、ウィンドウをスキャンして、UIViewがviewHierarchyにあるかどうかを確認することもできます。

もっと簡単な方法はありますか?

4

3 に答える 3

20

iOS 9.0以降、Swiftでは、ViewControllerでこれを行うことができます。

if viewIfLoaded?.window != nil {
    // view should be updated
}

または、実際にビューを使用する場合は、次のようにします。

if let view = viewIfLoaded, view.window != nil {
    // update view
}

iOSの古いバージョンの場合、Objective-Cでは次のようになります。

if (self.isViewLoaded && self.view.window != nil) {
    // view is in a view hierarchy and should be updated
}
于 2012-12-05T02:48:27.920 に答える
1

viewDidLoadは、ビューの読み込みが完了した後にのみトリガーされると思います。したがって、viewDidLoad自体に必要な機能を追加できると思います。

于 2012-12-05T03:05:59.080 に答える
-1

ビュー階層にないかどうかを確認するには、これで十分です。

// From a UIViewController sub-class
if !self.isViewLoaded {
    // view is not in the view hierarchy
}
于 2018-12-05T15:15:29.687 に答える