2012-02-09 14 views
4

の上にサブビューを追加します。しかし、私は、クラスのユーザに、addSubviewを使って、そして理想的にはInterface Builderからも、新しいサブビューをそのサブビューに置く能力を与えたいと思います。は、私はプログラム的に作成し、サブビューの数を追加するUIViewのサブクラスを持っているプログラムで作成したUIViewの階層

これを行うにはどのような方法が最適ですか?

は今、私はそれだけでaddSubviewを使用してプログラムのビューを追加するために許容可能であると仮定し、私は、私はこのいずれかに行くかかどうかはわかりません。

注:インターフェイスビルダーを使用して追加のサブビューを追加しようとしましたが、上記のカスタムUIViewサブクラスがプログラマチックに他のビューを作成すると非表示になります。

答えて

3

インターフェイスビルダのペン先にジェネリックUIViewをドラッグし、そのクラスをカスタムサブクラスに設定するだけです。あなたは、サブビューをドラッグ・ドロップすることを含め、普通の古いUIViewでできることはすべて実行できます。

は、実際にカスタムビルダーがInterface Builderでどのように見えるかを見ることができません。それはちょうど灰色の矩形になります。あなたはIBプラグインでXcode 3でこれを行うことができましたが、少なくとも当面は、Xcode 4はこのようなプラグインをサポートしていません。

EDIT:

OPのフォローアップに対処するため、あなたは、z発注、プログラムを管理する必要があります。

(うまく利用者のサブビューの上にサブビューをレイヤーも、あなたが述べたように、)
UIView *mySubview1 = ...; 
UIView *mySubview2 = ...; 
UIView *mysubview3 = ...; 
[self addSubview:mySubview1]; 
[self addSubview:mySubview2]; 
[self addsubview:mySubview3]; 

:おそらく最も簡単な方法はあるとして、主に代わりのように何かをする、あなたのコードを残していますあなたが代わりに使用することができ

UIView *container = [[UIView alloc] initWithFrame:[self bounds]]; 
UIView *mySubview1 = ...; 
UIView *mySubview2 = ...; 
UIView *mysubview3 = ...; 
[container addSubview:mySubview1]; 
[container addSubview:mySubview2]; 
[container addsubview:mySubview3]; 
[self addSubview:container]; 
[self sendSubviewToBack:container]; 
[container release]; 

のようなものですか[自己insertSubviewを:コンテナatIndex:0]が、私は追加するとバックに移動すると、コードの迅速なスキムミルク中に少し明確だと思います。

最終結果はあなたのサブビューの既存のz順序を台無しにする必要がないことです。シングル、簡単に管理コンテナにそれらを置くことによって、あなたはサブビューの階層に希望どこにコレクション全体を移動することができます。

+0

これは私が最初に試したものです。残念ながら、カスタムクラスはプログラムで他のサブビューを追加するので、IBで追加したビューに表示されます。 – Tom

+0

私の更新された回答をご覧ください。 –

+0

ありがとう!それは理にかなっている。 – Tom

関連する問題