UIViewのプログラムでアクセスするサブビューは、Interface Builderで追加しました
質問
私は、背景画像、ボタンおよび前面に移動する必要がフルスクリーン(影)を覆う別の画像を含むビューを有するペン先ファイルを有しています。
ビューで、私は子ビューを作成していて、それらを作成し、[self addView]
を使用してそれらを追加した後、私は前に影画像を移動する必要があります。
私は現在、そのビューを見つけるために、タグの属性を使用していますが、私はいくつかの名前で私はInterface Builderで追加サブビューを識別する手段によって、より良い方法はおそらくあります考えています。
(サブビューは、すでに何らかの方法でその親に接続されているので、とは意味をなされていない)は、私がその親とサブビューを接続するためにIBOutletを追加しようとしますが、それはうまくいきませんでした。
解決
IBOutlets
の方法が動作するはずですし、それを行うための最善の方法は、おそらくです。あなたは.hファイルでそれらを宣言した後、あなたがInterface Builderで適切な接続を行っていることを確認します。
他のヒント
iPhoneは、ビューコントローラの遅延ロードを行います。ペン先はinitWithCoderにロードされていない可能性がありますかケンドールとしてそのことについては、initメソッドは、指定されます。
のviewDidLoadは、ビューが表示される前に、それらにアクセスしたい場合はペン先から何かをアクセスするための好適な場所です。
希望に役立ちます。
どの時点で、あなたはサブビューにアクセスしようとしていますか?あなたはViewControllerをの初期化中にしようとすると、IBOutletsはnilになります。あなたがそれらを得ることができる第1の方法は、おそらくのviewDidLoadである。
それは、このようなことを行うには意味を成していた理由は、彼らはすでに何か他のサブビューであっても、IBOutletsはいくつかのコンポーネントにだけ直接のポインタがあるということです。ただ、狩猟の節約ます。
タグを使用すると、viewWithTagを使用している限り、特定のビューを、見つけるための完全に有効な方法です。すでにタグを使用している場合は、あなただけ呼び出して好きではない場合を除きIBOutletsに変更する必要はありませんviewWithTag:ます。