如何在iOS中动态生成对象?

Sim*_*nRH -2 cocoa-touch objective-c ios

我想动态生成按钮.下面的代码生成2个按钮.但是我怎样才能编写一个循环来生成批量(100或1000)按钮.

- (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!");
}
Run Code Online (Sandbox Code Playgroud)

Col*_*gic 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];
Run Code Online (Sandbox Code Playgroud)

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!");
}
Run Code Online (Sandbox Code Playgroud)

注意:请不要这样做......我不知道为什么你会想要1000个UIButton,但是你应该有一个更好的方法来做你想做的事情.