Objective-C:一组UIButtons

ach*_*ral 7 arrays objective-c uibutton

如果我在Interface Builder中设置了大量按钮,我如何通过代码将它们放入数组中?

例如,如果我有三个按钮,并在接口文件中定义它们:

@property (nonatomic, retain) IBOutlet UIButton *button1;
@property (nonatomic, retain) IBOutlet UIButton *button2;
@property (nonatomic, retain) IBOutlet UIButton *button3;
Run Code Online (Sandbox Code Playgroud)

如果我想将每个按钮重命名为"Hello",我希望能够将它们组合成一个数组,然后使用如下函数:

for (int i = 0; i < someArray.count; i++)
{
    someArray[i].text = @"Hello";
}
Run Code Online (Sandbox Code Playgroud)

有人可以提供有关如何实现这一目标的信息(如果可能的话)?

谢谢

Lac*_*che 14

另一种方法是将按钮连接到Interface Builder中的NSArray.

@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;
Run Code Online (Sandbox Code Playgroud)


Wri*_*sCS 7

以下代码将添加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];
Run Code Online (Sandbox Code Playgroud)


enn*_*ler 6

假设IB中的按钮正确连接到IBOutlet属性,那么它就像以下一样简单:

NSArray *buttonArray = [[NSArray alloc] initWithObjects:button1,button2,button3,nil];
Run Code Online (Sandbox Code Playgroud)