17

ビューコントローラーのソースコードをチェックせずにビューが読み込まれていることを確認する方法はありますか (例: viewDidLoad、viewWillAppear など)。

または、サブビューを取得するためにビューがロードされているかどうかを実行時に/動的に確認するにはどうすればよいですか。

4

3 に答える 3

47

ビュー コントローラのインスタンスがある場合は、次のように尋ねることができます。

viewController.isViewLoaded
于 2012-04-04T00:03:39.250 に答える
4

「ロードされた」とはどういう意味か、完全にはわかりません。「ロード済み」の定義に応じて、次のことができます。

  • ビューが正しいかどうかを確認しますnil(ロードされたものの最も広い定義ですが、EXC_BAD_ACCESSを取得しないように、ビューの割り当てが解除されたときに誰かがビューを削除するかどうかによって異なります)。

  • [view superview]ビューにスーパービューがあるかどうかを確認します。

  • ビューがウィンドウの一部であるかどうかを確認[view window]します(「画面上」にあるための前提条件)

  • 対応するUIViewControllerがあると仮定して、コントローラーのisViewLoadedプロパティを照会して、ビューがメモリーにロードされているかどうかを確認します。これは、ライフサイクルの問題を表示するのに特に役立ちます。

「ロードされた」とあなたがチェックできる他のもののおそらく他の解釈があります、しかしこれらは私の頭のてっぺんから最初のものです。

于 2012-04-03T23:44:43.353 に答える
0

ユースケースについてもよくわかりませんが、ビュー階層を照会したいだけの場合はこれが役立つかもしれません。

- (UIView *)viewWithTag:(NSInteger)tag
  1. たとえば、関心のあるすべてのビューにタグを付けます。関心のある特定のビューにタグを付けます。"ImportantView1"、"ImportantView2"、...

  2. 上記の API 呼び出しを行うには (親) ビューが必要です

  3. 呼び出し、(親) ビューとすべてのサブビューを照会します。

  4. カスタム タグ名でビューをフィルター処理します。(タグが「ImportantView」で始まる場合)

于 2012-04-03T23:52:08.623 に答える