0

数か月間動的に 12 個のボタンを作成し、ボタンに別の画像を設定しました。すべてのボタンにタグが付いています。switch メソッドを使用して、タグ付きの各ボタンにアクセスします。選択時のボタンの画像を変更しました。しかし、ボタンが選択されているときに、他のボタンの画像を選択解除として変更することはできません。

これは私のコードです。

//Button Creation in scroll view
NSMutableArray* buttonArray = [[NSMutableArray alloc] init];

for(int i = 0; i < 12; i++)
{
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setFrame:CGRectMake(0,5,37,37)];
    [btn setTag:i];
    [btn setImage:[UIImage imageNamed:[buttonImageArray objectAtIndex:i]] forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(monthBtnAction:) forControlEvents:UIControlEventTouchUpInside];
    [buttonArray addObject:btn];
    [btn release];
}

menuScrollView.showsHorizontalScrollIndicator = FALSE;
menuScrollView.showsVerticalScrollIndicator = FALSE;
menuScrollView.scrollEnabled = YES;
menuScrollView.bounces = FALSE;
menuScrollView.delegate = self;
menuButtons = buttonArray;

float totalButtonWidth = 15;

for(int i = 0; i < [menuButtons count]; i++)
{
    UIButton *btn1 = [menuButtons objectAtIndex:i];

    CGRect btnRect = btn1.frame;
    btnRect.origin.x = totalButtonWidth;
    [btn1 setFrame:btnRect];
    btn1.userInteractionEnabled=YES;
    [menuScrollView addSubview:btn1];
    totalButtonWidth += btn1.frame.size.width+25;
}

[menuScrollView setContentSize:CGSizeMake(totalButtonWidth, 45)];
[self.view addSubview:menuScrollView];
//Button Action Method
-(IBAction)monthBtnAction:(id)sender {
 NSLog(@"Button Tag is : %i",[sender tag]);

switch ([sender tag]) {
    case 0:
        NSLog(@"Tag:%d January",[sender tag]);
        flag0 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);
        [self viewWillAppear:NO];
        break;
    case 1:
        NSLog(@"Tag:%d Febraury",[sender tag]);
        flag1 = YES;

        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];


        break;
    case 2:
        NSLog(@"Tag:%d March",[sender tag]);
        flag2 = YES;

        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

       break;
    case 3:
        NSLog(@"Tag:%d April",[sender tag]);
        flag3 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];


        break;
    case 4:
        NSLog(@"Tag:%d May",[sender tag]);
        flag4 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];


        break;
    case 5:
        NSLog(@"Tag:%d June",[sender tag]);
        flag5 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];


        break;
    case 6:
        NSLog(@"Tag:%d July",[sender tag]);
        flag6 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

        break;
    case 7:
        NSLog(@"Tag:%d August",[sender tag]);
        flag7 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

        break;
    case 8:
        NSLog(@"Tag:%d September",[sender tag]);
        flag8 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

        break;
    case 9:
        NSLog(@"Tag:%d October",[sender tag]);
        flag9 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];


        break;
    case 10:
        NSLog(@"Tag:%d November",[sender tag]);
        flag10 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

        break;
    case 11:
        NSLog(@"Tag:%d December",[sender tag]);
        flag11 = YES;
        theButton = (UIButton *)sender;
        [theButton setImage:[UIImage imageNamed:[buttonSelectArray objectAtIndex:[sender tag]]] forState:UIControlStateNormal];
        dateValue = [sender tag]+1;
        NSLog(@"dateValue:%d",dateValue);

        [self viewWillAppear:NO];

        break;        
}
}
4

1 に答える 1

4

NSButton 型のクラス変数を取得し、IBAction メソッドの最後 (switch-case の後) で、その値を送信者に設定します。これにより、最後にクリックされたボタンのタグが保存されます。

ここで、IBAction メソッドの冒頭 (切り替え前) で、保存したボタンの画像を非選択画像として設定します。

**.h file**
UIButton* lastClickedButton;

// Your IBAction
-(IBAction)monthBtnAction:(id)sender
{
    [lastClickedButton setImage:[UIImage imageNamed:[buttonUnselectArray objectAtIndex:[lastClickedButton tag]]] forState:UIControlStateNormal];

    //Your switch statement 
    switch
    { 
      ----
      ----
    }

    lastClickedButton = sender;
}
于 2013-10-29T06:45:27.427 に答える