создание более одной переменной метки программно

#ios #objective-c #variables #label #concatenation

#iOS #objective-c #переменные #метка #конкатенация

Вопрос:

Как я могу создать более одной переменной label программно Я пробовал следующий код, но не могу создать, есть ли какой-либо способ объединить имя переменной и целое число?

 for(int intNum=0;intNum<3;intNum  )
{
    UILabel *lblText1;
    UILabel *lblmany = [lblText1 stringByAppendingString:intNum];   
    lblmany = [[UILabel alloc] initWithFrame:CGRectMake(65, 50, 200, 30)];
    lblmany.text = strLable1Caption;
    lblmany.textAlignment = UITextAlignmentCenter;  

    [self.view addSubview:lblmany];
    [lblText1 release];
    [lblmany release];
}
  

Комментарии:

1. Что вы пытаетесь сделать? Код не имеет особого смысла

2. я пытаюсь создать 3 метки с разными свойствами и должны быть размещены в разных местах

3. Я понимаю это, но что вы ожидаете, что произойдет?

4. мне нужно создать 3 метки с разными свойствами (размер, текст и т.д.) И должны быть размещены в разных местах

Ответ №1:

вы создаете label с одним и тем же фреймом, почему он будет размещен в другом месте?? Определите фрейм динамически, а не со статическими значениями, И если вы хотите применить другие свойства, используйте switch case, если хотите использовать только для цикла, иначе определите отдельно, а не в цикле.

Ответ №2:

Ваш код нелеп (а stringByAppendingString — это метод istance в NSString calss, поэтому вы не можете получить к нему доступ с помощью UILabel). что вы пытаетесь сделать, если хотите создать несколько меток, сделайте что-то вроде этого.

 for(int intNum=0;intNum<3;intNum  )
{


    UILabel *lbl;

lbl = [[UILabel alloc] initWithFrame:CGRectMake(65, 50, 200, 30)];
lbl.text = strLable1Caption;
llbl.textAlignment = UITextAlignmentCenter;  


    [self.view addSubview:lbl];

    [lbl release];
lbl=nil;

}
  

Комментарии:

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

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

Ответ №3:

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

MyController.h

       #defune MAX_LABELS 2048
        @interface myController : UIViewController
        {
            UILabel                 *myLabels[MAX_LABELS];
            NSInteger               myLabelsCount;
    }
    - (void) createMyLabels;
    - (void) removeMyLabels;

    @end
  

MyController.m

     @implementation myController

        - (void) createMyLabels
        {
            [self removeMyLabels];

            float x = 10.0;
            float y = 5.0;


           myLabelsCount = 0;

            for (int i = 0; i < [No of labels]; i  )
            {

                  myLabels[myLabelsCount] = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 30)];
                  myLabels[myLabelsCount].text = strLable1Caption;
                  myLabels[myLabelsCount].textAlignment = UITextAlignmentCenter;  


                   [self.view addSubview:myLabels[myLabelsCount]];
                   myLabelsCount  ;
                   y = y   15.0;
            }
        }

        - (void) removeMyLabels
        {
            for (int i = 0; i < myLabelsCount; i  )
            {
                [jmyLabels[i] removeFromSuperview];
            }
            myLabelsCount = 0;
        }

        - (void)dealloc {

            [super dealloc];
        }


        @end
  

Комментарии:

1. я пытался, но на этой строке происходит сбой ——- MyLabels[myLabelsCount] = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 30)];

2. Я отредактировал код. пожалуйста, попробуйте еще раз. Извините за мою глупую ошибку. Теперь попробуйте.

3. на самом деле я исправил ошибки, которые я пытался, но это приводило к сбою, даже сейчас его сбой в той же строке

4. Можете ли вы проверить значение myLabelsCount? Сделайте его равным 0 перед циклом for.

Ответ №4:

Я использовал этот код для создания кнопок в разных местах, вы можете использовать UILabels вместо кнопок.

      int x =15;  
     int  y =12;   
     for (int i =0 ; i <numberamount; i  )   {  
        if (x>273) {   
            x=15;  
            y=y 50;  
        }  
        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
        button.frame = CGRectMake(x, y, 40, 40);  
        [button setTitle:[nmb objectAtIndex:i] forState:UIControlStateNormal];  
        [button addTarget:self action:@selector(buttonPressed:)
         forControlEvents:UIControlEventTouchUpInside];  
        NSString *tagindex = [[NSString alloc]initWithFormat:@"%@",[nmb objectAtIndex:i]];  
        int tagindexint  = [tagindex intValue];  
        [button setTag:tagindexint];  
        [buttons addSubview:button];  
        [tagindex release];  
        x = x 75;  
    }