Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何以编程方式生成UIN标签并添加到视图?_Ios_Objective C_Nsdictionary - Fatal编程技术网

Ios 如何以编程方式生成UIN标签并添加到视图?

Ios 如何以编程方式生成UIN标签并添加到视图?,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我是iOS开发的新手 我的目标是: 生成UIN标签 UILabel*label0=[[UILabel alloc]init] UILabel*label1=[[UILabel alloc]init] UILabel*标签n=[[UILabel alloc]init] 使用addSubView将每个UILabel添加到视图中 为了生成N个UILabels(如果我做得不对,请纠正我),我在viewcontroller.h @property (strong,nonatomic)NSMutableD

我是iOS开发的新手

我的目标是:

  • 生成UIN标签

    UILabel*label0=[[UILabel alloc]init]

    UILabel*label1=[[UILabel alloc]init]

    UILabel*标签n=[[UILabel alloc]init]

  • 使用addSubView将每个UILabel添加到视图中

  • 为了生成N个UILabels(如果我做得不对,请纠正我),我在
    viewcontroller.h

    @property (strong,nonatomic)NSMutableDictionary *uiLabelsDictionary;
    
    在viewcontroller.m中

    self.uiLabelsDictionary = [[NSMutableDictionary alloc]init];
    
    int yOffset = 40;
    
    for(int i=0;i<10;i++)
    {
        yOffset = yOffset+40;
        [self.uiLabelsDictionary setObject:[[UILabel alloc]initWithFrame:CGRectMake(10, yOffset, self.view.frame.size.width, self.view.frame.size.width)] forKey:[NSString stringWithFormat:@"label%d",i]];
    }
    
    NSLog(@"%@",self.uiLabelsDictionary);
    
    self.uiLabelsDictionary=[[NSMutableDictionary alloc]init];
    int-yOffset=40;
    对于(inti=0;i只需这样做--

    int yOffset=40;
    对于(inti=0;i只需这样做--

    int yOffset=40;
    对于(int i=0;i使用数组

    @property (nonatomic, strong) NSArray *labels;
    

    NSMutableArray*标签=[NSMutableArray];
    对于(int i=0;i使用数组

    @property (nonatomic, strong) NSArray *labels;
    

    NSMutableArray*标签=[NSMutableArray];
    

    对于(int i=0;我认为您可能想问自己的问题是“我做得对吗?”如果您试图生成这么多标签,您可能希望它们位于UITableView或UICollectionView中。@LucasDerraugh感谢您的回答。在UITableView或Collection视图中使用标签是正确的。我所说的问题是生成UIViewobject与NSDictionary结合使用是正确的方法在这里使用字典是一个糟糕的选择。使用
    NSMutableArray
    @rmaddy会简单得多谢谢您的回复。是否可以像NSDictionary输出标签0=“”那样映射NSMutableArray中的每个uilabel;看到这一点,您可能想问自己的问题是“我做的对吗”。如果您试图生成那么多标签,您可能希望它们位于UITableView或UICollectionView中。@LucasDerraugh感谢您的回答。关于在UITableView或Collection View中使用,您是对的。我所说的问题是生成一个UIViewobject与NSDictionary结合使用是正确的方法在这里使用字典是一个糟糕的选择。使用
    NSMutableArray
    @rmaddy会简单得多谢谢您的回复。是否可以像NSDictionary输出标签0=“”中那样映射NSMutableArray中的每个uilabel;谢谢你的回复。我是新手,是否可以通过编程来UILabel*label1,UILabel*label2。这只能通过标记来实现。我的第二个疑问是将引用分配给*label变量10次。它是否会导致*label只指向最后一个UILabel?不,它将创建10个不同的UILabel对象。您可以使用“UILabel*label=(UILabel*)[self.view view-withtag:1];”ARC是否会自动解除分配其他9个对象,因为它没有引用?不,它们不会被解除分配。它们将被ViewController销毁谢谢回答。我是新手,是否可以通过编程方式UILabel*label1,UILabel*label2。这只能通过标记实现?我的第二个疑问是将引用分配给*label vari可执行10次。它是否会导致*label仅指向最后一个UIlabel?否,它将创建10个不同的UIlabel对象。您可以使用“UIlabel*label=(UIlabel*)[self.view viewWithTag:1];访问其中任何一个对象ARC是否会自动解除分配其他9个对象,因为它没有引用?否,它们不会被解除分配。它们将被ViewController销毁并等待答复。是否可以动态生成UILabel*label0、UILabel*label1、UILabel*label2..数组中正好有这些对象;label[0]、label[1]、label[2]…UILabel*label0=self.label[i],右侧好,左侧怎么样,是否可以动态生成UILabel-label1,UILabel-label2,…我不知道您的意思,可能会问一个新问题。您不能在objective-c中动态创建变量名(至少在不干扰运行时的情况下——这是您不想做的)但为什么您需要label0?无论如何,您有标签[0],请使用它。感谢您的回复。是否可以动态生成UILabel*label0,UILabel*label1,UILabel*label2..您在数组中正好有它;label[0],label[1],label[2]…UILabel*label0=self.label[i],右侧好,左侧怎么样,是否可以动态生成UILabel-label1,UILabel-label2,…我不知道您的意思,可能会问一个新问题。您不能在objective-c中动态创建变量名(至少在不干扰运行时的情况下是这样——这是你不想做的),但是为什么你需要label0呢?不管怎样,你有label[0],只要使用它就行了。
    @property (nonatomic, strong) NSArray *labels;
    
    NSMutableArray *labels = [NSMutableArray array];
    
    for (int i=0; i<10; i++) {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 80+i*40, self.view.frame.size.width, self.view.frame.size.width)];
        [self.view addSubview:label]; // Add the label to the view
        [labels addObject:label]; // Keep track of the labels
    }
    self.labels = labels;
    
    NSLog(@"%@", labels);
    
    // Later on...
    UILabel *label0 = self.labels[0]; // Get a reference to label 0