2014-07-01 21 views
-1

我想實現一個功能,當我點擊「operatorButton」titleColor改變了,但是當我點擊除「operatorButton」之外的其他Button,「operatorButton」titleColor返回originalColor。用NSArray中的項聲明全局變量?

這裏我得到了一個問題: 我在「viewDidLoad」方法中聲明的「operatorButton」是局部變量,我無法在其他方法中訪問。 如何將「operatorButton」聲明爲代表NSArray「operationButton」中每個項目的全局變量?

#import <UIKit/UIKit.h> 

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *operationButton;  


- (void)viewDidLoad { 

[super viewDidLoad]; 
for (UIButton *operatorButton in self.operationButton){ 
    [operatorButton setTitleColor:[UIColor colorWithRed:248.0/255 green:148.0/255 blue:52.0/255 alpha:1.0] 
         forState:UIControlStateSelected]; 
    [operatorButton setTitleColor: [UIColor colorWithRed:95.0/255 green:105.0/255 blue:114.0/255 alpha:1.0] 
         forState:UIControlStateNormal]; 
} 

} 
+0

並不清楚你的要求。你想讓按鈕在用戶點擊時改變顏色,還是想要製作單選按鈕,其中只有一個按鈕被選中(橙色),其他按鈕被取消選擇(灰色)? – user3386109

+0

@ user3386109我想讓它像系統計算器一樣,當一個操作員按鈕被按下時,其他操作員按鈕被取消選中。當按下數字按鈕時,所有操作員按鈕都被取消選擇。 – alex

+0

好吧,看起來好像LyricalPanda已經有一個建議:) – user3386109

回答

1

您已經將它聲明爲IBOutletCollection的數組。您可以在該文件中的任何位置訪問self.operationButton,因爲它是屬性。

創建一個IBAction所有按鈕,那麼請嘗試以下操作:

-(IBAction)selectedButton:(id)sender 
{ 
    UIButton *senderButton = (UIButton *)sender; 
    for (UIButton *operatorButton in self.operationButton) 
    { 
    if ([operatorButton isEqualTo:senderButton]) 
    { 
     //set title color to your selected Color 
    } 
    else 
    { 
     //set title color to original color on buttons not clicked 
    } 
    } 
}