2

私のアプリケーションでは、ユーザーが infoButton をクリックすると、画面の特定の場所に別のビューが追加されます。次の方法でこの動作を実現しようとしています。

- (IBAction)showInfo1:(id)sender
  {
    UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
    [self.view addSubview:myView1]; 
  }

(クラスのヘッダー ファイルですべてを宣言しました。)

コードを実行してボタンを押しても、何も起こらないように見えます (新しいビューが表示されません)。

また、XCode が次の警告を表示していることにも気付きました。

「myView1」のローカル宣言は、インスタンス変数を非表示にします。

誰にもアイデアはありますか?

4

2 に答える 2

4

何も変わらないことをどうやって知っていますか?

myView1には実際には何も含まれていないようです。myView1の背景色を設定してみてください

- (IBAction) showInfo1: (id) sender
{
    UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
    myView1.backgroundColor = [UIColor redColor];
    [self.view addSubview: myView1]; 
}

特定のポイントで開くには、たとえばCGRectMake()のパラメーターを変更する必要があります

左上で幅50、高さ20で開くには、次のようにします。

CGRectMake(0, 0, 50, 20)
于 2011-03-29T16:05:30.487 に答える
1

「'myView1'のローカル宣言はインスタンス変数を非表示にします。」クラスで同じ名前のプロパティを宣言したためにメッセージが表示されます(タイプが異なっていても)。

UIView *myView1クラス定義を入力すると、メソッドは次のようになります。

- (IBAction)showInfo1:(id)sender{
  myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
  [self.view addSubview:myView1]; 
}

さらに考慮すべき点があります。使用をやめたときにリリースする必要がmyView1ある、複数回配置しないようにするなどですが、ここに基本的な考え方があります。

最後に、ビューがすでに追加されている可能性がありますが、'ビューにはまだ何も含まれていないため、気付かないでしょう。また、UIViewControllerをチェックして、自分に適しているかどうかを確認したいと思います。

于 2011-10-18T19:26:41.247 に答える