2012-04-03 13 views
12

は、私はビューがそのビューコントローラのソースコード(例えば、のviewDidLoad、viewWillAppear、など)チェック場合

またはどのようにすることができますを確認せずにロードされて見ることができる方法はありますサブビューを取得するためにビューがロードされている場合は、実行時/動的にチェックします。

+0

例えば、私はその後、私のビューがロードされるまで待ちたいとそのビューのすべてのサブビューを取得し、それらのUIViewのプロパティと情報を持つことで、KIFのステップやシナリオなどを使ってテストを開始します。 ビューがロードされるまで待つことを望みますが、アクセシビリティラベルを使用したくないので、 のUIViewのプロパティを取得するにはどうすればいいですか? – ramo

+0

ロードすると、ビューのすべてのサブビューを取得できます。私は、この情報を別のものから取得して、プロジェクトのソースコードではなく、ライブラリファイルと言うことができるようにする必要があります。 – ramo

答えて

35

(タグは「ImportantView」で始まる場合)、ビューコントローラのインスタンスを持っている場合は、あなたがそれを頼むことができます。

viewController.isViewLoaded 
+0

次に、これをチェックしてisViewLoadedをチェックする必要があります。したがって、applicationDidFinishLaunchingが呼び出されてから、最初のビューのviewdidloadが呼び出されます。どこでisViewLoadedをチェックできますか? – ramo

3

「ロード済み」という意味では完全にはわかりません。それが割り当て解除されたときに取得ないように、これは、ビューをnilling誰かに依存してもビューは、ロードされたのnil(最も広い定義である場合

  • チェック:あなたは可能性があり、「ロード」のあなたの定義に応じて、 EXC_BAD_ACCESS)。

  • [view superview]をチェックして、ビューにスーパービューがあるかどうかを確認します。ビューが対応するのUIViewControllerがあると仮定すると、ウィンドウの一部(「画面上」であるための前提条件)

  • であるかどうかを確認するには

  • チェック[view window]、それがロードされているかどうかを確認するために、コントローラのisViewLoadedプロパティを照会メモリへのビュー。これは、ビューのライフサイクルの問題に特に役立ちます。

おそらく「読み込まれた」とその他のチェックが可能な解釈がありますが、これは私の頭の上からの最初のものです。

0

どちらのユースケースもわかりませんが、これはビュー階層を照会するだけの場合に役立ちます。

- (UIView *)viewWithTag:(NSInteger)tag 
  1. タグEXのために興味がありますすべてのビュー、。関心のある特定のビューについてのタグ。 "ImportantView1"、 "ImportantView2"、...

  2. あなたは上記のAPI呼び出し

  3. コールますクエリ(親)ビューとすべてサブビューにする(親)ビューを必要とします。

  4. カスタムタグ名でビューをフィルタリングします。

関連する問題