2009-04-15 7 views
0

addSubviewを使用してコード内の一部のイメージをレイアウトしようとしていますが、表示されません。UIViewクラスにサブビューが表示されない

UIViewをサブクラス化したクラス(myUIView)を作成し、IBのnibファイルのクラスをmyUIViewに変更しました。

次に、次のコードを入力しますが、まだ空白の灰色の画面が表示されています。

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
     [self setupSubviews]; 
    } 
    return self; 
} 

- (void)setupSubviews 
{ 
    self.backgroundColor = [UIColor blackColor]; 

    UIImageView *black = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"black.png"]]; 
    black.center = self.center; 
    black.opaque = YES; 

    [self addSubview:black]; 

    [black release]; 
} 

答えて

0

あなたのinitメソッドが

+0

それは働いた....任意のアイデアなぜですか? – Craig

+1

これはIBのやり方であり、なぜ本当にわからないのです。おそらくもっと良い方法は、 - (void)awakeFromNibです。これは、ペン先のすべてのオブジェクトがロードされた後に呼び出され、IBOutletsにアクセスして、それらが初期化されていることを知ることができます。 – cobbal

2

を実行された場合、はい、ちょうどinitWithCoderを実施見るために、ロギング呼び出しを追加時々私はIBとのトラブルがあったとinitWithFrame:

または少なくともきたinitWithCoder:を実装してみてください。

initWithFrameは、UIViewがコードから動的に作成されたときに呼び出されます。 .nibファイルから読み込まれたビューは、常にinitWithCoderを使用してインスタンス化されます。コーダーは.nibファイルから設定を読み込みます。

私は別の方法で初期化を行いました。initWithCodeとinitWithFrame(と私の独自の初期化メソッドが必要な場合)

関連する問題