2011-07-19 12 views
2

1つのUIViewにUIButton、UIImageViewなどのUIViewをパッケージ化したいとします。私はそのビューを表示しようとすると 、それは私RootViewController上に表示されていません。ここで他のUIViewを含むUIViewサブクラス

は私のUIViewサブクラスのコードです:

#import "Hover.h" 

@implementation Hover 


- (id)init{ 
    self = [super init]; 
    if (self) { 
     // Initialization code 
     UIImage *hover = [UIImage imageNamed:@"Hover.png"]; 
     UIImageView *imageView = [[UIImageView alloc] init]; 
     imageView.image = hover; 
     imageView.frame = CGRectMake(0, 0, hover.size.width, hover.size.height); 
     imageView.alpha = 0.75; 
     [self addSubview:imageView]; 
     [imageView release]; 
    } 
    return self; 
} 

そしてここでは、RootViewControllerクラスです:

- (void)viewDidLoad 
{ 

    Hover *hover = [[Hover alloc] init]; 
    [self.navigationController.view addSubview:hover]; 
    [hover release]; 


    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

「ホバービュー」は表示されません!しかし、私は私のRootViewControllerに単一のUIImageViewを追加すると、それは動作します!

+0

はまた、' 'initWithFrameあるUIView'の指定イニシャライザをオーバーライドする必要があります。 – Andriy

答えて

2

ビューを表示するには、カスタムイニシャライザを作成するのではなく、-(id)initWithFrame:(CGRect)frame;を上書きする必要があります。

は、この方法を試してみてください:

-(id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if(self) { 
     // do init here... 
    } 
    return self; 
} 

はまた、-(void)viewDidLoad;方法では、最初の[super viewDidLoad];を送信した後、ビューにinit/ALLOC。

+0

[super viewDidLoad]をトップに移動するだけです。ありがとう – Lowip

+0

'UIView'の文書を見て、イニシャライザについて...あなたは歓迎です –

1
 - (void)viewDidLoad 
     { 
      [super viewDidLoad]; 

      Hover *hover = [[Hover alloc] init]; 

      [self.navigationController.visibleViewController.view addSubview:hover]; 

      [hover release]; 



       // Do any additional setup after loading the view, typically from a nib. 
     } 
+0

これを試して..... –

+0

ニースコピー/貼り付け、説明してください? – Mateo

+0

私たちはvisibleviewcontrollerのナビゲーションコントローラのビューにビューを追加する必要があります。それ以外の場合は、それはできません –

0

ナビゲーションコントローラを使用している場合は、initWithRootViewControllerを実行する必要があります。ナビゲーションコントローラにビューを直接追加することはできません。代わりにプッシュを使用してください。 `あなたのビューが正しく初期化されていることを確認すべき:

HTH マーカス

関連する問題