2014-09-30 74 views
0

我有一個項目,誰擁有35個按鈕的具體的UIButton:選擇與數字

IBOutlet UIButton *button1; 
    IBOutlet UIButton *button2; 
    IBOutlet UIButton *button3; 
    ... 
    IBOutlet UIButton *button35; 

在我來說,我創建從0-35中選擇一個號碼的功能,我想選擇根據數字按鈕產生,因爲我們看到如下:

int x = arc4random() % 35; 

button[x].layer.borderColor = [[UIColor darkGrayColor] CGColor]; 

但代碼不能正常工作,因爲我認爲這是沒有辦法,我可以選擇的按鈕,我怎麼能解決這個問題,並選擇按鈕並更改邊框顏色?

回答

1

我建議從某些固定偏移量開始爲按鈕分配順序標籤,然後使用viewWithTag按照DanielM的替代建議中的建議獲取按鈕。

#define K_TAG_BASE 100 //BUTTON TAGS START AT 100 

int tag = arc4random() % 35 + K_TAG_BASE; 

NSButton aButton = [self.view viewWithTag: tag]; 
aButton.layer.borderColor = [[UIColor darkGrayColor] CGColor]; 
1

您可以設置每個按鈕的標記字段和查找基礎上,標籤上的按鈕:

int x = arc4random() % 35; 
UIButton * desiredButton = (UIButton *)[self.view viewWithTag:x]; 
desiredButton.layer.borderColor = [[UIColor darkGrayColor] CGColor]; 

您也可以在這種情況下使用IBOutletCollection,以避免35點鍵的定義:

IBOutletCollection(UIButton) NSArray * _buttonsArray; 
+0

IBOutletCollection對象不保證結果數組中對象的順序。我被這個咬了。在我最初的測試中,對象似乎按照我拖動它們的順序進入陣列,但在稍後的測試中,順序未保留。 – 2014-09-30 03:03:56

+0

好點。我編輯了我的答案,以避免誤導任何人。 – danielM 2014-09-30 15:16:47

0

因爲我看到你設置與網點的按鈕,我建議你也定義IBOutletCollection屬性並用它來獲取隨機按鈕(在出口處集合中的順序是不放心,但你並不需要說用於隨機選擇):

// In your class @interface 
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonsArray; 

// In your class @implementation 
-(void)selectRandomButton 
{ 
    NSInteger randomIndex = arc4random() % self.buttonsArray.count; 
    ((UIButton *)self.buttonsArray[randomIndex]).layer.borderColor = [UIColor darkGrayColor].CGColor; 
}