2011-05-01 5 views
1

私は、プログラムでコードのいくつかのボタンをforループで作成しました。ユーザーがこれらのボタンの1つに触れてドラッグすると、ボタンフレームをアニメートして削除したいと思います(アプリを追い出す場合は、通常のOS X Dockの動作と同じです)。UIButtonのフレームをタグで操作する方法は?

私の問題は、ボタンのフレームにアクセスする方法がわかりません:私はボタンのタグしか持っていないので、これはすべて削除メソッドに渡されます。 ボタンのタグしかない場合は、フレームを操作するにはどうすればよいですか?

for (int k=0; k < numberOfTabs; k++) // k < 4 (e.g. 3 < 4) 
    { 
     UIButton* btn = [[[UIButton alloc] initWithFrame:frame] autorelease]; 
     btn.tag = k; 
     btn.frame = CGRectMake(-10, 0, buttonWidth, buttonHeight); 
     [btn addTarget:self 
       action:@selector(tabAction:) 
     forControlEvents:UIControlEventTouchUpInside]; 
     [btn addTarget:self 
        action:@selector(tabDelete:) 
      forControlEvents:UIControlEventTouchDragOutside]; 

... 

そして、これはこれまでのところ、私のtabDelete方法である:ここで

は、これまでの私のコードです

-(void)tabDelete:(id)sender 
{ 
    NSInteger tid = ((UIControl*)sender).tag; 
    NSLog(@"buttonTag about to be deleted has the tag: %i", tid); 



} 
+0

配列にあなたのボタンを入れてください。 –

+0

デリゲートメソッドで、 'sender'パラメータはあなたのボタンです。あなたは 'tag'にアクセスするのと同じ方法で' frame'プロパティにアクセスできます。 – albertamg

答えて

3

はUIButtonにUicontrolのキャスト、あなたはフレームにアクセスする必要があります、例:

- (void)tabDelete:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    CGRect frame = button.frame; 
} 

-addTarget:action:forControlEvents: on UIButtonは、常にUIButtonイン送信者としての覚え書き。

@albertamgは:固定、ありがとう:)

+1

あなたは 'UIButton * button =(UIButton *)sender;を意味すると思います。 – albertamg

関連する問題