0

MutableArray カウントを使用して複数のボタンを作成したい。ボタンを作成した後、特定のボタンを押すたびに、そのボタン名をラベルに表示したいと考えています。しかし、ボタンを押すと、常に MutableArray の最後のインデックス値の名前が表示されます。この問題で助けてください。私はiOSでより新鮮です。それは私のコードです。

-(void)ViewDidLoad {
    NSMutableArray *Mute_array=[[NSMutableArray alloc]initWithObjects:@"One", @"Two", @"Three", @"Four", @"Five", nil]; 

   for (int k=0; k<[Mute_array count]; k++){
       UIButton *btn_sub_category = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [btn_sub_category addTarget:self action:@selector(clicks:) forControlEvents:UIControlEventTouchDown];
        [btn_sub_category setTitle:[Mute_Sub_Category objectAtIndex:k] forState:UIControlStateNormal];
        btn_sub_category.frame = CGRectMake(278, k*130, 483, 44);
        [self.view addSubview:btn_sub_category];
    }
}

-(void)clicks:(id)sender{
   label.text=[btn_sub_category  currentTitle];       
   //Here a want to send the name of that clicked button current title
}

ただし、ここのボタンの現在のタイトルは、常に MutableArray の最後のオブジェクト「Five」のみを表示しています。押されたボタンの現在のタイトルが欲しい。

4

3 に答える 3

2
-(void)clicks:(id)sender{
    UIButton *theButton = (UIButton*)sender;
    NSString *theButtonTitle = [theButton titleForState:UIControlStateNormal]
    NSLog(@"theButtonTitle :- %@", theButtonTitle);
    label.text=theButtonTitle;       
   //Here a want to send the name of that clicked button current title
}

このコードを試してください。次のメソッドを使用してボタンのタイトルを取得します

titleForState:

指定された状態に関連付けられたタイトルを返します。- (NSString *)titleForState:(UIControlState)state パラメータ

The state that uses the title. The possible values are described in UIControlState.

戻り値

指定された州のタイトル。特定の状態にタイトルが設定されていない場合、このメソッドは UIControlStateNormal 状態に関連付けられたタイトルを返します。

ドキュメントを読むhttps://developer.apple.com/library/ios/documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instm/UIButton/titleForState :

于 2013-10-07T07:10:57.263 に答える
2

このようにしてみてください:

-(void) clicks:(id)sender
    {
        if ([sender isKindOfClass:[UIButton class]])
        {
            UIButton *button = (UIButton*)sender;
            NSString *title = button.currentTitle;

            // do whatever you want with title
        }
    }
于 2013-10-07T07:20:34.017 に答える
1

いいねしてみて、

-(void)clicks:(id)sender{
 UIButton *resultebutton= (UIButton*)sender;
   label.text=resultebutton.titleLabel.text; 
}
于 2013-10-07T07:11:00.997 に答える