Отображение кнопок на экране с помощью цикла for с Objective-C - PullRequest
0 голосов
/ 19 августа 2011

У меня есть база данных, полная слов, и каждое слово содержит информацию. Моя работа состоит в том, чтобы показывать слова на экране с помощью кнопок, без использования конструктора интерфейса. Я подумал, что мог бы сделать это с помощью цикла for, например:

for (int i=0; i <=20; i++) {

    UIButton *word= [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [word setTitle:@"Test" forState:UIControlStateNormal];
    [word setFrame:CGRectMake(0, 0, 100, 40)];
    [self.view addSubview:word];
}

все это делается в разделе viewDidLoad. Но когда я запускаю программу, отображается только одна кнопка, так как я могу заставить ее показать все 20 кнопок? Спасибо заранее, Николай

Ответы [ 4 ]

1 голос
/ 19 августа 2011

Это может быть полезно.

for (int i=0; i <=20; i++) 
    { 
        UIButton *word= [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [word setTitle:@"Test" forState:UIControlStateNormal]; 
        [word setFrame:CGRectMake(0, (i+1)*100, 100, 40)]; 
        [self.view addSubview:word]; 
    }
0 голосов
/ 19 августа 2011

То, что вы делаете здесь - это добавление 100 бтн на одном кадре. Вместо этого, если вы хотите показать все 100 бтн на экране, вам придется использовать два цикла for.

например, если вы хотите показать четыре btns в одном ряду, тогда вы должны использовать,

 for(i = 0 ; i < 20 (i.e. no of elements in a single column) ; i++ )
 {
      for(j = 0; j < 4 (i.e. no of elements in a single row) ; j++)
      {
              UIButton *word= [UIButton buttonWithType:UIButtonTypeRoundedRect];
              [word setTitle:@"Test" forState:UIControlStateNormal]; 
              [word setFrame:CGRectMake(j*40, i*100, 100, 40)]; 
              [self.view addSubview:word]; 
      }
 }
0 голосов
/ 19 августа 2011

Каждый раз, когда кнопка Frame похожа .. так что только 1 кнопка показана ..

Попробуйте вот так

[word setFrame:CGRectMake(0+i*110, 0+i*50, 100, 40)];

или установите кадр в соответствии со своими потребностями

0 голосов
/ 19 августа 2011

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

float _width = 100;
float _x = i * _width;
[word setFrame:CGRectMake(_x, 100, _width, 40)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...