2012-02-29 41 views
-2

我想动态生成按钮。下面的代码生成2个按钮。但是,我怎样才能编写一个循环来生成大量(100或1000)按钮。如何在iOS中动态生成对象?

- (void)viewDidLoad 
{ 
//allocate the view 
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

//set the view's background color 
self.view.backgroundColor = [UIColor whiteColor]; 

//create the buttons 
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

//set the position of the button 
button.frame = CGRectMake(100, 170, 100, 30); 
button1.frame = CGRectMake(200, 170, 100, 30); 

//set the button's title 
[button setTitle:@"Click Me!" forState:UIControlStateNormal]; 
[button1 setTitle:@"Click!" forState:UIControlStateNormal]; 

//listen for clicks 
[button addTarget:self action:@selector(buttonPressed) 
forControlEvents:UIControlEventTouchUpInside]; 
[button1 addTarget:self action:@selector(buttonPressed) 
forControlEvents:UIControlEventTouchUpInside]; 

//add the button to the view 
[self.view addSubview:button]; 
[self.view addSubview:button1]; 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 
-(void)buttonPressed { 
NSLog(@"Button Pressed!"); 
} 

回答

6

其实我目瞪口呆的是,你设法拉断的代码,你有没有不知道如何做一个for循环。

除此之外,永远不要做viewDidLoad。

//allocate the view 
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

//set the view's background color 
self.view.backgroundColor = [UIColor whiteColor]; 

UIViewController加载它自己的视图,你在这里覆盖它没有真正的原因。

-(void)viewDidLoad { 

    [super viewDidLoad]; 

    for(int i = 0; i < 1000; i++) { 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [button setFrame:CGRectMake(100 + i, 170 + i, 100, 30)]; 

     [button setTitle:@"Click Me!" forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

     [[self view] addSubview:button]; 
    } 
} 

-(void)buttonPressed { 
    NSLog(@"Button Pressed!"); 
} 

注:请不要永远做这个...我不知道你为什么会想1000个UIButtons,但应该有到W/E你正在尝试做一个更好的方法。

+0

完美 - 谢谢。 Obj C对我来说是新的,我试图找出自动生成类。 – SimonRH 2012-03-01 02:10:42

2

刷上了Objective-C的控制结构 - 尤其是对()循环:

for (int i ; i < someLargeNumber; i++) { 
    ... Make buttons here ... 
} 
相关问题