2012-01-23 20 views
1

スーパービューでUIViewを作成したときに、終了ボタンとして機能するボタンをこのビューに追加したいとします。 これを押すと、スーパービューからこのUIViewが削除されますが、どうすればいいですか? ボタンがビューを作成し、あなたのクラスでUIViewに終了ボタンをプログラムで追加する方法

- (IBAction)skillButtonPressed:(UIButton *)sender 
{ 
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(40, 130, 240, 232)]; 
    UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [cancelButton setFrame:CGRectMake(0, 0, 32, 32)]; 
    [cancelButton setTitle:@"x" forState:UIControlStateNormal]; 

    [myView addSubview:cancelButton]; 
    [self.view addSubview:myView]; 
} 
+0

その最初のビューコントローラuが提示できるのは、ナビゲーションコントローラ、UItabbarなどです。 –

+0

これは最初のviewControllerで作成されたもので、画面上のポップアップウィンドウのようなものなので、終了ボタンでこのウィンドウを閉じます。 – Shakesbeer

答えて

4

を押したときにそのビューで表示し、ボタンをプログラム的に作成され、このように機能を追加します。

//tag for subview - make it unique 
#define SUBVIEW_TAG 9999 

- (void) handleExit 
{ 
    UIView * subview = [self.view viewWithTag:SUBVIEW_TAG]; 
    [subview removeFromSuperview]; 
} 

とサブビューを作成しません:ここでは

- (IBAction)skillButtonPressed:(UIButton *)sender 
{ 
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(40, 130, 240, 232)]; 
    UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [cancelButton addTarget:self action:@selector(handleExit) forControlEvents:UIControlEventTouchUpInside]; 
    [cancelButton setFrame:CGRectMake(0, 0, 32, 32)]; 
    [cancelButton setTitle:@"x" forState:UIControlStateNormal]; 

    [myView addSubview:cancelButton]; 
    [myView setTag:SUBVIEW_TAG]; 
    [self.view addSubview:myView]; 

    //don't forget to release if you are not using ARC! 
} 
+0

そのボタンに対して別のメソッドを作成する必要はありますか?私はボタンをタッチするとセレクターを使用してそのメソッドを呼び出す? – Shakesbeer

+0

はい - InterfaceBuilderを使用している場合は、ビューのヘッダーファイルに** - (IBAction)handleExit; **関数を宣言し、ボタンの** Touch Up Inside **イベントをビューに接続します。 –

+0

プログラムで行う方法を教えてもらえますか?私の場合は、ビューとボタンがプログラマチックに作成されます。 – Shakesbeer

1

はあなたのためのコードです:

 self->myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    self-> myButton = CGRectMake(60, 6, 180, 30); 
    [self-> myButton setTitle:@"MyButton" forState:UIControlStateNormal]; 
    [self-> myButton setTextColor:[UIColor whiteColor]]; 
    self-> myButton = 1; 
    [self-> myButton addTarget:self action:@selector(myButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:self-> myButton]; 

変更myButtonTouchUpInside方法の実装では

を置くあなたのボタンの座標、

[self removeFromSuperview]; 

希望、これは何をしたい..です

+0

はい、それは私が探しているもののようなものです。あなたはmyButtonTouchUpInsideを実装する方法を教えてください。私はこのようなものを試しましたが、うまくいきませんでした」 - (IBAction)exitView:(UIView *)送信者 { [sender removeFromSuperview]; } ' – Shakesbeer

+0

送信者はボタンです。 3人の異なる人が既にあなたに言ったように、 'removeFromSuperview'を自分に送るべきです。 –

+0

私は[自己removeFromSuperview]を置く。このメソッドでは、コンパイラは次のように言っています: "インスタンス型のメッセージのレシーバタイプ 'myClassName'は、セレクタ 'removeFromSuperview'でメソッドを宣言しません。"それのどこが悪いんだい? :( – Shakesbeer

1

あなたも、ビューまたは[self removeFromSuperview];

を非表示にすることができます
関連する問題