2013-10-29 179 views
0

我已經創建了12個按鈕動態月份,並且我爲按鈕設置了不同的圖像。所有按鈕都有標籤。我使用開關方法訪問每個帶有標籤的按鈕。選中時我改變了按鈕的圖像。但是,當選擇一個按鈕時,我無法將其他按鈕的圖像更改爲未選中。如何在選擇按鈕時更改多個按鈕的按鈕圖像?

這是我的代碼。

//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

取一個NSButton類型的類變量,並在IBAction方法的末尾(switch-case後面),將它的值設置爲sender。這將保存最後點擊的按鈕標籤。

現在在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; 
} 
+0

它爲我工作。你的答案中有一個更正。在.h文件中它不是NSButton的UIButton。請糾正它。 – Manimaran

+0

哦,是的。謝謝。我在OSX上工作,所以錯過了:)。現在更正。 – Neha

+0

嗯,這個答案也幫助了我。謝謝 :) –