создание более одной переменной метки программно - PullRequest
0 голосов
/ 27 апреля 2011

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

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];
}

Ответы [ 4 ]

1 голос
/ 27 апреля 2011

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

0 голосов
/ 27 апреля 2011

Я использовал этот код для создания кнопок в разных местах, вы можете использовать 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;  
    }  
0 голосов
/ 27 апреля 2011

Попробуйте,

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
0 голосов
/ 27 апреля 2011

Ваш код нелеп (а stringByAppendingString - это метод isstance для калибровки NSString, поэтому вы не можете получить к нему доступ с помощью 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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...