2010-11-23 11 views
-1
for (int i=0;i<[tableDataSource count];i++) 
{ 
     NSDictionary *dict = [tableDataSource objectAtIndex:i]; 
     rowText = [dict objectForKey:@"title"]; 

     UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 
     [btn setTitle:rowText forState:UIControlStateNormal]; 
     [btn addTarget:self action:@selector(myActionbtnText:) forControlEvents:UIControlEventTouchUpInside]; 
     btn.frame = CGRectMake(60, 40+2*(40*i), 200, 40); 
     btn.alpha = 0.81; 

     [self.view addSubview:btn]; 
} 

私はアクションが割り当てられたときにエラーが発生しました。私のアクションは以下のとおりです。ボタンイベントが発生したときにオブジェクト/パラメータを渡す方法。アプリケーション動的ボタンに複数のargu funを割り当てるとクラッシュする

-(void) myAction:(NSString *)btnText; 
{ 
    NSLog(@"%@ Button Clicked",btnText); 
} 

答えて

1

これを試してみてください:

for (int i=0;i<[tableDataSource count];i++) 
{ 
    UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 
    [btn setTitle:rowText forState:UIControlStateNormal]; 
    [btn addTarget:self action:@selector(myActionbtnText:) forControlEvents:UIControlEventTouchUpInside]; 
    btn.tag = i; 
    btn.frame = CGRectMake(60, 40+2*(40*i), 200, 40); 
    btn.alpha = 0.81; 

    [self.view addSubview:btn]; 
} 

-(void) myAction:(UIButton*)sender { 
    NSDictionnary *dict = [tableDataSource objectAtIndex:sender.tag]; 
    NSString* rowText = (NSString*)[dict objectForKey:@"title"]; 
    NSLog(@"%@ Button Clicked",rowText); 
} 
+0

ありがとうございましたMathieuF NOのボタンrが大きくなるとスクロールしません。私はScrollViewにもそれを置く。 – AJPatel

1

はあなたのソリューションと間違っていくつかのことがあります。

  1. UIButtonはaddTarget:action:withObject:forControlEvents:ではなく、addTarget:action:forControlEventsに応答します。これがアプリケーションがクラッシュする理由です。
  2. セレクタは@selector(myAction:)である必要があります。パラメータは含めないでください。
  3. ボタンが押されるまでには、とにかく動作しないと確信しています。rowTextは有効範囲外になります。だから、あなたは@MathieuFの解決策で行くべきです(ちょうどセレクターを正しく指定してください)。
+0

ロバートありがとうございますが、もし私が何をするよりも、その関数に引数/引数を渡さなければならないのですか?ボタンrがNOで増加するとスクロールしません。私はScrollViewにもそれを置く。 – AJPatel

関連する問題