0

ストーリーボードを使用し、ARCをオンにしたiOS5プロジェクトがあります。

ストーリーボードにthisViewControllerクラスのビューがあり、そこにドラッグしてクラスthisViewを指定した小さなサブビューがあります。

thisViewにはカスタムdrawRect関数があり、これが機能して、必要なものをうまく描画します。ただし、ボタンを動的に追加したいので、次のようにthisViewのinitWithFrameメソッドにボタンを追加します。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"This is called <3");
        UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(0, 0, 50, 50);
        btn.backgroundColor = [UIColor redColor];
        [btn setTitle:@"Play" forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:btn]; 
        [self bringSubviewToFront:btn];   // last thing I tried, didn't work, thought z-index was to low or something
    }
    return self;
}

NSLogが表示されてから関数が呼び出されていますが、ボタンが見つかりません

- 編集 -

追加情報:

ThisView.h

@interface RadarView : UIView <CLLocationManagerDelegate>{
    CLLocation *currentLocation;
}
4

2 に答える 2

0

コメントとチャットのおかげで問題が何であるかがわかりました

レーダービューコントローラーにinitがあり、initwithframeがトリガーされてNSLogが表示されましたが、initwithcoderが使用されていなかったため、何も表示されませんでした。これが問題であり、問​​題が発生しました。コメントと助けてくれてありがとう!

于 2012-07-23T11:52:51.817 に答える
0

initメソッドにSubViewを追加しないでください。にサブビューを追加し- (void)layoutSubviewsます。

    - (void)layoutSubviews {
         [super layoutSubviews];

         if (![self viewWithTag:12345]) {
            UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];
            btn.frame = CGRectMake(0, 0, 50, 50);
            btn.tag = 12345;
            btn.backgroundColor = [UIColor redColor];
            [btn setTitle:@"Play" forState:UIControlStateNormal];
            [btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
            [self addSubview:btn]; 
         }
    }
于 2012-07-23T10:04:53.810 に答える