Если я хочу переименовать каждую из этих кнопок, чтобы сказать "Привет", я хочу иметь возможность объединить их в массив, а затем использовать такую функцию, как:
for (int i = 0; i < someArray.count; i++)
{
someArray[i].text = @"Hello";
}
Может ли кто-нибудь предоставить информацию о том, как это достигается (если это возможно)?
Спасибо
Самое простое решение - создавать кнопки в коде, а не в Interface Builder. Есть и другие способы сделать это, но ни один из них не является особенно красивым. EricS 15.09.2011
Следующий код добавит 5 кнопок, каждая с новым тегом, а также свяжет их с событием. Кнопки будут размещены рядом с отступом 5px:
Если вы планируете получить доступ к кнопке за пределами области for{} ниже, вы можете определить свою кнопку в своем заголовке, в противном случае вы можете определить ее внутри области. UIButton * settButton;
.m
CGFloat staticX = 5; // Static X for all buttons.
CGFloat staticWidth = 60; // Static Width for all Buttons.
CGFloat staticHeight = 56; // Static Height for all buttons.
CGFloat staticPadding = 5; // Padding to add between each button.
for (int i = 0; i < 5; i++)
{
settButton = [UIButton buttonWithType:UIButtonTypeCustom];
[settButton setTag:i];
[settButton setFrame:CGRectMake((staticX + (i * (staticHeight + staticPadding))),5,staticWidth,staticHeight)];
[settButton setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%i.png",i]] forState:UIControlStateNormal];
[settButton addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchDown];
[settButtonView addSubview: settButton];
}
[self.view addSubview: settButtonView];
Ответ 4 · рейтинг 2 · Matthew Gillingham
Поскольку вы создали кнопки непосредственно в Interface Builder, не можете ли вы просто установить их прямо в коде?
Более общее решение было бы примерно таким... если я предполагаю две вещи: что все они являются подвидами представления UIViewController и что эти UIButtons являются единственными UIButtons в этом представлении, вы можете что-то сделать нравится:
for (UIView *aView in [self.view subviews]) {
if ([aView isKindOfClass:[UIButton class]) {
UIButton *aButton = (UIButton *) aButton;
[aButton setTitle:@"Hello" forState:UIControlStateNormal];
}
}
Ответ 5 · carlos
Я думаю, что проще всего создать одну кнопку, которую вы будете инициализировать и добавлять в изменяемый массив: