2012-06-04 74 views
2

我在視圖中有多個UIButtons的問題。我希望單獨選擇按鈕,一次選擇多個按鈕(例如:10個按鈕,選擇按鈕1,4,5,9)。IBOutletCollection的UIButtons - 改變按鈕的選定狀態

在我的頭我對IBOutletCollection屬性:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableArray *buttonToStaySelected; 

在我的實現,我有一個IBAction爲:

-(IBAction)selectedButton:(id)sender{ 
    for (UIButton *b in self.buttonToStaySelected) { 
    if (b.isSelected == 0){ 
     [b setSelected:YES]; 
    } else 
     [b setSelected:NO]; 
    } 
} 

我遇到的問題是,當我選擇任何與集合相關的按鈕,它們全部更改爲選定。我知道這個問題很可能(幾乎可以肯定)存在於循環中,但是我試圖規定的每個條件都會破壞代碼,並且沒有任何按鈕能夠「更改」狀態。

修訂

讓他們選擇,改變狀態,並檢查過多次,我用這個作爲我的最終代碼:

-(IBAction)selectedButton:(id)sender { 
    for (UIButton *b in self.buttonToStaySelected) { 
     if (sender == b) { 
     [b setSelected:!b.isSelected]; 
    } 
    } 
    } 

感謝所有幫助!

回答

4

selectButton:消息是通過一個參數發送的,該參數指定了被點擊的按鈕,但是您將操作應用於集合中的所有按鈕,而不僅僅是點擊的按鈕。

-(IBAction)selectedButton:(id)sender 
{ 
    for (UIButton *b in self.buttonToStaySelected) 
    { 
    if (sender == b) 
    { 
     b.isSelected == !b.isSelected 
    } 
    } 
} 
+0

工作。只要沒有選擇另一個按鈕,它就只允許setSelected方法持續存在。我會繞過它,但這肯定是更符合軌道。 – hedrick