gpt4 book ai didi

iphone - 创建一个 for 循环以将 39 个按钮添加到数组

转载 作者:太空狗 更新时间:2023-10-30 03:29:55 26 4
gpt4 key购买 nike

我的 .h 文件中有 39 个不同的 UIButton 变量,但我想将它们中的每一个都添加到一个数组中,而不必输入相同的内容 39 次。

有没有办法在 for 循环中执行此操作?

按钮相应命名:btn1、btn2、btn3 等

最佳答案

您可能想放弃头文件中的 39 个按钮,而是使用一个数组。我怀疑您想使用手动引用,以便您可以利用 Interface Builder 来控制事件和布局。我建议做一些不同的事情。

创建单个属性 - NSMutableArray。然后,当加载 View 时,即时创建按钮。

要访问按钮,请使用类似[self.arrayOfButtons objectAtIndex:38]; 的东西。 (在 39 个按钮的情况下,将返回最后一个按钮。);`

要创建一个按钮,您可以使用以下内容:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

请注意,您传入了按钮的 init 方法的框架。您的按钮框架将从其容器的左上角开始,您的按钮将是 100 像素的正方形。该框架是 CGRect 的一个实例。 (您通过调用函数 CGRectMake(x,y,width,height) 创建一个 CGRect

要制作 39 个按钮,您可能需要按如下方式循环,给定一个数组来保存按钮、myButtons 和预定义的 numberOfButtons 和维度变量:

for(int i=0;i<numberOfButtons;i++){
//Create the button
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,y,width, height)];
//Store the button in our array
[self.myArray addObject:button];
//Release the button (our array retains it for us)
[button release];
}

当然,您需要为 xywidthheight 设置唯一值对于每个按钮,否则它们将全部重叠。一旦你创建了你的按钮,你就可以用它们做一些事情,比如设置标签,或者在屏幕上显示它们。要在屏幕上显示它们,您可以这样做:

for(UIButton *button in self.myButtons){
//add the button to the view
[self.view addSubview:button];
}

当然,仅仅在屏幕上添加按钮是没有用的。你需要能够让他们做一些事情。要向按钮添加操作,您可以使用:

[button addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchDown];

第一部分,addTarget:self,表示此 View Controller 处理您要要求它处理的事件。 action:@selector(someMethod:) 告诉类在事件发生时执行什么方法。然后,forControlEvents:UIControlEventTouchDown 表示当点击按钮时,所述类应执行所述方法。

因此,在您的 header 中:

#import <UIKit/UIKit.h>

@interface MyClass :UIViewController{

NSMutableArray *myButtons;
}

@property (nonatomic, retain) NSMutableArray *myButtons;

//Use UIButton as the sender type if you want
- (void)someMethod:(id)sender;

// ... Other code can go here of course
@end

在您的实现中,您可以使用:

#import MyClass.h


@implementation MyClass

- (id)init{

self = [super init];

if(self){

NSMutableArray *temp = [[NSMutableArray alloc] init];
self.myButtons = temp;
[temp release];

}

return self;

}


- (void)viewDidLoad{

//
// Create the buttons
//

for(int i=0;i<numberOfButtons;i++){
//Create the button
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,y,width, height)];

//You may want to set button titles here
//or perform other customizations

//Store the button in our array
[self.myArray addObject:button];
//Release the button (our array retains it for us)
[button release];
}

//
// Show the buttons onscreen
//

for(UIButton *button in self.myButtons){
//add the button to the view
[self.view addSubview:button];
//add the action
[button addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchDown];
}
}

- (void)someMethod:(id)sender{
//Do something when the button was pressed;
}

- (void)dealloc{
[self.myButtons release];
[super dealloc];
}

@end

现在,不用把Interface Builder带上飞机也能去按钮天堂。去 UIButton 快乐!

关于iphone - 创建一个 for 循环以将 39 个按钮添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com