Sabarish
Sabarish

Reputation: 1184

Displaying UILabel dynamcially from the NSMutableArray

I have a mutable array as below

 labelArrays = [NSMutableArray arrayWithObjects:@"One”, @“Two”, @“Three", nil];

I want to display all the list array values as individual label. This is like displaying the UILabel dynamically using the array values. What i did is as below,

 int count=20;
 for(int i = 0; i < [labelArrays count]; i++){
 label1 = [[UILabel alloc]init];
 label1.text = [labelArrays componentsJoinedByString:@" "];
 label1.textColor = [UIColor colorWithRed:0.643 green:0.643 blue:0.639 alpha:1];
 label1.layer.borderWidth = 1.0;
 label1.layer.cornerRadius = 8;
 count+=20;
 [self addSubview:label1];
}

Here I can only display all the array values inside the single label. How can i display the array values in multiple labels dynamically.

//viewcontroller

myView.label1.frame =CGRectMake(588,200,200,28);

Upvotes: 0

Views: 601

Answers (3)

Pradeep Singh
Pradeep Singh

Reputation: 762

Define a public method for view in which you are willing to add the UILabel, pass a CGRect to that method and then according to your design, with each iteration update the x coordinate or y coordinate. Follow the below steps:

// code in your viewcontroller
[myView designYourMultipleLabelsWithStartingFrame:CGRectMake(588,200,200,28)]; // pass the frame of the first label.

Now add the multiple UILabel in your view class, let's assume you have set labelArrays.

// code in view class
-(void) designYourMultipleLabelsWithStartingFrame:(CGRect) frame{

   float xCoordinate = frame.origin.x;
   float yCoordinate = frame.origin.y;

   for(int counter = 0; counter < [labelArrays count]; counter++){
      UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(xCoordinate,yCoordinate,labelWidth,labelHeight)];
      label.text = [labelArrays objectAtIndex:counter];
      [self addSubview:label];
      // update the x coordinate or y coordinate according to your design. Let's say we need the labels in vertical order, so update the y Coordinate by labelHeight and gap between two labels.
      yCoordinate = yCoordinate + labelHeight + gapBetweenTwoLabels.
   }
}

Hope this will help.

Upvotes: 1

Anbu.Karthik
Anbu.Karthik

Reputation: 82759

your coding is fine , but you are not added the frame , try this

label1 =  [[UILabel alloc] initWithFrame: CGRectMake(0,count,aslikeyourwidth,aslikeyourheight)];

Upvotes: 2

Mike
Mike

Reputation: 251

Just a thought - would you not be better using a tableview to show the array?

It looks like you may need to just handle their position on the view as the code looks like it is adding the labels but it is placing them over each other.

Upvotes: 1

Related Questions