2014-09-29 6 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

+0

попробовать с для петли/представления коллекции/UITableView – Alok

+0

можно также подкласс кнопки с этим случаться в их инициализации – Erik

ответ

1

Создать ..

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

и подключить все кнопки к этому.

Затем определить свои атрибуты в пользовательском интерфейсе, как это (скриншот моих кнопок, поэтому установить свои свойства, как вы хотите)

enter image description here

или цикл через buttonCollection с this..put это ваш 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

Этот ответ демонстрирует цикл, и в отличие от ответа Алока, этот код имеет отношение к вопросу, зацикливание существующих кнопок и настройка свойств, обсуждаемых в OP. Единственное предостережение, которое я добавил бы, это то, что это изменит каждую подзону кнопки, даже те, которые не находятся в сетке. +1 – danh

+0

Хорошая точка внимания. Я подумал об этом, но оп сказал, что сетка кнопок заполняет весь экран. Они могут добавить тег к кнопкам, а также проверить на это. – markhunte

Смежные вопросы