динамическое именование UIB-кнопок внутри цикла - target-c, iphone sdk - PullRequest
0 голосов
/ 14 мая 2010

Как может показаться очевидным, я не вооружен знанием цели C. Используя другие более простые компьютерные языки, я пытаюсь установить динамическое имя для списка кнопок, генерируемых простым циклом (как показано в следующем коде).

Проще говоря, я хотел бы, чтобы несколько UIB-кнопок генерировались динамически (в цикле), называя их динамически, а также другие связанные функции.

button1, button2, button3 и т. Д.

После поиска в Google Stackoverlow я так и не пришел к четкому простому ответу, поэтому мой вопрос.

- (void)viewDidLoad {
    // This is not Dynamic, Obviously 
    UIButton *button0 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button0 setTitle:@"Button0" forState:UIControlStateNormal];
    button0.tag = 0;
    button0.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);
    button0.center = CGPointMake(160.0,50.0);
    [self.view addSubview:button0]; 
    // I can duplication the lines manually in terms of copy them over and over,  changing the name and other related functions, but it seems wrong. (I actually know its bad Karma)

    // The question at hand:
    // I would like to generate that within a loop
    // (The following code is wrong)

    float startPointY = 150.0;
    //
    for (int buttonsLoop = 1;buttonsLoop < 11;buttonsLoop++){

        NSString *tempButtonName = [NSString stringWithFormat:@"button%i",buttonsLoop];


        UIButton tempButtonName = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [tempButtonName setTitle:tempButtonName forState:UIControlStateNormal];
        tempButtonName.tag = tempButtonName;
        tempButtonName.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);
        tempButtonName.center = CGPointMake(160.0,50.0+startPointY);
        [self.view addSubview:tempButtonName];
        startPointY += 100;
    }


}

1 Ответ

2 голосов
/ 14 мая 2010

Если вы идете не так, то пытаетесь каждый раз вводить разные имена переменных для кнопки в цикле. Вам не нужно этого делать, и это делает вещи сложнее, чем они должны быть. Если вы делаете:

for(i=0;i<4;i++) {
    UIButton *button = //...

тогда у вас будет другая кнопка каждый раз, когда вам нужно.

...