2014-09-29 50 views
1

我有一個項目,其中包含35個相同的按鈕(黑色背景和灰色邊框)位於一個旁邊(第一行5,然後五個底部,填充我的iPhone的整個屏幕)。創建一組UIButtons?

在我把邊緣的方法是:

button1.layer.borderWidth = 1.0f; 
    button1.layer.borderColor = [[UIColor grayColor] CGColor]; 

    button2.layer.borderWidth = 1.0f; 
    button2.layer.borderColor = [[UIColor grayColor] CGColor]; 

    button3.layer.borderWidth = 1.0f; 
    button3.layer.borderColor = [[UIColor grayColor] CGColor]; 

    .... 

    button35.layer.borderWidth = 1.0f; 
    button35.layer.borderColor = [[UIColor grayColor] CGColor]; 

想象的代碼行有多少人反覆對我並不意味着一件好事,在這種情況下,想知道如何能我最小化它?可以將所有按鈕組合在一起?

+1

您可以將它們組合到陣列,並在循環 – sha 2014-09-29 22:49:18

+0

嘗試與循環/集合視圖/ UITableView的 – Alok 2014-09-29 22:50:00

+0

你也可以繼承的按鈕有這種情況發生配置在他們的init – Erik 2014-09-29 22:54:16

回答

1

創建..

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

和所有的按鈕連接到這一點。

然後在你的用戶界面,通過與this..put這在buttonCollection定義屬性,像這樣(截圖是我的按鈕,所以設置你的屬性,你怎麼想)

enter image description here

或者週期您的viewDidLoad

for(UIButton *button in buttonCollection){ 
      //capture frame 
      button.layer.borderWidth = 1.0f; 
      button.layer.borderColor = [[UIColor grayColor] CGColor]; 
} 
0

與陣列樣品環是有些事情是這樣的:

NSArray *keyPadImage=[[NSArray alloc]initWithObjects:@"keypad1-3.1.png",@"keypad2-3.1.png",@"keypad3-3.1.png",@"keypad4-3.1.png",@"keypad5-3.1.png",@"keypad6-3.1.png",@"keypad7-3.1.png",@"keypad8-3.1.png",@"keypad9-3.1.png",@"keypad-dot-3.1.png",@"keypad0-3.1.png",@"keypad-x-3.1.png",nil]; 

int height; 
int count = [keyPadImage count]; 
for(int i=0;i<count;i++) 
{ 
    height=i/3; 
    UIButton *keyPad=[[UIButton alloc]initWithFrame:CGRectMake(15+(i%3)*92, 72+(height*75), 89, 72)]; 
    [keyPad setBackgroundImage:[UIImage imageNamed:[keyPadImage objectAtIndex:i]] forState:UIControlStateNormal]; 
    [keyPad addTarget:self action:@selector(modifyTotalAmount:) forControlEvents:UIControlEventTouchUpInside]; 

    [keyPad setTag:(i+1)]; 

    [self.view addSubview:keyPad]; 
} 

感謝

1

這可能是沒有做到這一點的最好辦法,但這個想法是,一個UIButton是一個UIView繼承。

所以你可以通過查看按鈕上的視圖的子視圖來獲得你的按鈕數組。

在數組上使用快速枚舉來檢查類是否爲UIButton並進行更改。

NSArray * arr = _myView.subviews; 

    for (UIView * button in arr) { 
     NSLog(@" button %@", button); 
     if ([button isKindOfClass:[UIButton class]]) { 
      // UIButton* thisButton =button; 
      button.layer.borderWidth = 1.0f; 
      button.layer.borderColor = [[UIColor grayColor] CGColor]; 
     } 
    } 

我的快速測試在這裏工作。

但正如我所說我不能說如果這是一個好主意這樣做,。希望意見將教育我,如果有坑瀑布..

+0

這個答案演示了一個循環,與@Alok的答案相反,代碼與問題相關,循環現有按鈕並設置OP中討論的屬性。我要補充的一點是,這將改變每個按鈕子視圖,即使那些不在網格中的按鈕。 +1 – danh 2014-09-30 00:10:43

+0

謹慎的好處。我確實考慮過這個,但是操作員說按鈕網格填滿了整個屏幕。他們可以給按鈕添加一個標籤,並檢查這些。 – markhunte 2014-09-30 00:40:59