2012-01-10 18 views
1

私は現在、ビューからスプライトを削除する方法として "U"というタイトルのUIButtonを使用しようとしています。@selectorメソッドに引数を渡すことはできませんか?

基本的に私のコードは、スプライトに触れると、選択された(スプライト*)スプライトを渡すデリゲート(View Controller)にメッセージが送信されるように機能します。このメソッドでは、そのスプライトの上にUIButtonを描画します。ここまでは順調ですね。

しかし、問題は、ボタンが押されるたびにそのスプライトを削除するためにUIButtonに@selectorを実行させたいということです。

は当初、私はこれを試してみました:

-(void)spriteSelected:(Sprite *)sprite{ //delegate method implementation 
     [sprite.button addTarget:self action:@selector(removeSprite:sprite) forControlEvents: UIControlEventTouchDown] 
}  

-(void)removeSprite:(Sprite *)sprite{ 
     [sprite removeFromSuperView];} 

しかし、私がそのようなセレクタに引数を置くことができないようです。どのように私はこれを調整することができますか?

おかげ

+1

こんにちは、このリンクをチェックしてください。http://stackoverflow.com/questions/3716633/passing-parameters-on-button-actionselector – SriPriya

答えて

3

もとのクラスのように、あなたは、Spriteクラスでこれを実行する必要があります。セレクタは、単にメソッド識別子である

-(void)youAreSelected { 
    [self.button addTarget:self action:@selector(removeMe:) forControlEvents: UIControlEventTouchDown]; 
} 

-(void)removeMe:(id)sender { 
    [self removeFromSuperView]; 
} 
2

Spriteクラスで

-(void)spriteSelected:(Sprite *)sprite{ 
     [sprite youAreSelected]; 
} 

メソッドの呼び出しではなく、メソッド呼び出しのようにパラメータを含めることはできません。

このようなことを管理する通常の方法は、ビューコントローラがタッチされたボタンを見て、それが関連付けられているスプライトを見つけ出し、スプライトを削除することです。スプライトとボタンの両方をビューの最初に配置するのはおそらくビューコントローラだったので、必要なすべての情報が必要です。

関連する問題