2012-04-06 3 views
0

У меня есть NSMutableArray, и у меня есть сохранение в нем некоторых строковых значений. Размер NSMutableArray может варьироваться от 2 до 5 (означает, что в нем могут храниться 2-5 строковых значений).Динамическое создание UIButtons - Ошибка логики

В зависимости от количества NSMutableArray мне нужно инициализировать UIBUttons, а затем установить значение String, хранящегося в init, на заголовок кнопок.

int numberOfButtonsToBeInitialize= [mutableArr count];// we are finding the number of buttons to be initialize and we assign it to a variable. 

Теперь мне нужно создать кнопки (то, что когда-либо число возвращаемых numberOfButtonsToBeInitialize)

Как я могу это сделать?

ответ

1
for(int i=0;i<numberOfButtonsToBeInitialize;i++){ 
    //init the button 
    UIButton *bout = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     //set the title 
     [bout setTitle:[mutableArr objectAtIndex:i] forState:UIControlStateNormal]; 
     [bout addTarget:self action:@selector(event:) forControlEvents: UIControlEventTouchUpInside]; 
     [self.view addSubview:bout ]; 
     //then you can set the position of your button 
     [bout setFrame:CGRectMake(70,3, 40,40)];} 
0

Попробуйте это:

NSMutableArray *myButtonsArray = [[NSMutableArray alloc] initWithCapacity:0]; 
UIButton *tmpButton; 
for (NSString *bTitle in mutableArr) 
{ 
    tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [tmpButton setTitle:bTitle forState:UIControlStateNormal]; 
    // Any additional setup goes here 
    [myButtonsArray addObject:tmpButton]; 
} 

Теперь у вас есть массив со всеми кнопками. Вы можете просто перебрать этот массив и добавить любую кнопку в качестве подсмотра в вашем основном представлении.

0

Вам нужна петля for. Например:

float buttonWidth=50; 
float margin=5; 
for (int index=0; index<numberOfButtonsToBeInitialize;index++) 
{ 
    UIButton* button=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    NSString* buttonTitle=[mutablearr objectAtIndex:index]; 
    [button setTitle:buttonTitle forState:UIControlStateNormal]; 
    [button setFrame:CGRectMake(0+(buttonWidth+margin)*index, 0, buttonWidth, 30)]; 
    [button setTag:100+index]; 
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 
} 

В этом случае мы размещаем кнопки в строке (по горизонтали). Откорректируйте свои собственные предпочтения