简体   繁体   中英

How to show different labels in different sections?

I want to set labels in section... How can i set different labels in different section cz in tableview i want to make different sections and i am using the title for header in section.. by doing this i make different sections correctly but not able to differentiate the data between the sections.. Anyone can help me

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{



    // create the parent view that will hold header Label
    UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(0,-60,300,60)];

    // create the label object
    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    headerLabel.frame = CGRectMake(0,0,self.view.frame.size.width,60);
    UIColor* mainColor = [UIColor colorWithRed:47.0/255 green:168.0/255 blue:228.0/255 alpha:1.0f];
    headerLabel.backgroundColor = mainColor;
    headerLabel.font = [UIFont boldSystemFontOfSize:18];

    headerLabel.textAlignment = UITextAlignmentCenter;
//    
//    UILabel *firstSection = [[UILabel alloc] initWithFrame:CGRectZero];
//    firstSection.frame = CGRectMake(0,0,self.view.frame.size.width,60);
//   
//    firstSection.font = [UIFont boldSystemFontOfSize:18];

     UIView *firstSection = [[UIView alloc] initWithFrame:CGRectMake(0,-60,300,60)];
    //headerLabel.textAlignment = UITextAlignmentCenter;

    if(section == 0)
        headerLabel.text = @"Reciever Party";
    UILabel *nameLbl =[[UILabel alloc]initWithFrame:CGRectMake(20, 35, 100 ,50)];
    nameLbl.text =@"Name";
    nameLbl.textColor=[UIColor blackColor];
    UIFont *bold = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
    [nameLbl setFont:bold];
    nameLbl.backgroundColor =[UIColor clearColor];
    [headerLabel addSubview:nameLbl];

    UILabel *addLbl =[[UILabel alloc]initWithFrame:CGRectMake(20, 65, 100 ,50)];
    addLbl.text =@"Address";
    addLbl.textColor=[UIColor blackColor];
    UIFont *bold1 = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
    [addLbl setFont:bold1];
    addLbl.backgroundColor =[UIColor clearColor];
    [headerLabel addSubview:addLbl];


    if(section == 1)
        headerLabel.text = @"Sender Party";
    UILabel *senderName =[[UILabel alloc]initWithFrame:CGRectMake(20, 125, 100 ,50)];
    senderName.text =@"Address";
    senderName.textColor=[UIColor blackColor];
    UIFont *bold2 = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
    [addLbl setFont:bold2];
    senderName.backgroundColor =[UIColor clearColor];
    [headerLabel addSubview:senderName];



    if(section == 2)
        headerLabel.text = @"Third Section Header";
    headerLabel.textColor = [UIColor whiteColor];

    [customView addSubview:headerLabel];

    return customView;

}

I am giving you a sample with hard coded data that how can you show data in section tableView. viewForHeaderInSection is responsible for creating headers of each section, not for showing data in section's row.

I am adding label on cell's content view as you don't want to add this from storyboard/ prototype cell.

Try this:-

In cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YourIdentifier"];

/*
 *   If the cell is nil it means no cell was available for reuse and that we should
 *   create a new one.
 */
if (cell == nil) {

    /*
     *   Actually create a new cell (with an identifier so that it can be dequeued).
     */

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"YourIdentifier"];

    UILabel *lbl =[[UILabel alloc]initWithFrame:CGRectMake(20, 15, 100 ,50)];
    lbl.textColor=[UIColor blackColor];
    UIFont *bold1 = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
    [lbl setFont:bold1];
    lbl.hidden = NO;
    lbl.tag = 101;
    lbl.backgroundColor =[UIColor clearColor];
    [cell.contentView addSubview:lbl];
}

UILabel *lblCell = (UILabel*)[cell.contentView viewWithTag:101];

if(indexPath.section == 0) //first section
{
    if (indexPath.row == 0) //first row of first section
    {
        lblCell.text =@"Name";
    }
    if (indexPath.row == 1) //second row of first section
    {
        lblCell.text =@"Address";
    }
}
if(indexPath.section == 1) //second section
{
    if (indexPath.row == 0) //first row of second section
    {
        lblCell.text =@"age";
    }
    if (indexPath.row == 1) //second row of second section
    {
        lblCell.text =@"phone no.";
    }
}
if(indexPath.section == 2) //third section
{
    if (indexPath.row == 0) //first row of third section
    {
        lblCell.text =@"city";
    }
    if (indexPath.row == 1) //second row of third section
    {
        lblCell.text =@"father";
    }
}
/* Now that the cell is configured we return it to the table view so that it can display it */
return cell;
}

you have to use like that

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        return 40;
    }

    -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

        UIView *sectionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 225, 40)];
        UIImageView *sectionImage = [[UIImageView alloc]initWithFrame:CGRectMake(5, 0, 40, 40)];

        sectionImage.image = [UIImage imageNamed:[objMenuImageList objectAtIndex:section]];
        sectionImage.contentMode = UIViewContentModeCenter;
        [sectionView addSubview:sectionImage];

        UILabel *sectionLable = [[UILabel alloc]initWithFrame:CGRectMake(50, 10, 150, 20)];
        sectionLable.contentMode = UIViewContentModeLeft;
        sectionLable.text  = [objMenuList objectAtIndex:section];
        [sectionLable setFont:[UIFont systemFontOfSize:14]];
        sectionLable.textColor = [UIColor colorWithRed:(206/255.f) green:(180/255.f) blue:(116/255.f) alpha:1.0f];

        [sectionView addSubview:sectionLable];

        UIButton *sectionButton = [UIButton buttonWithType:UIButtonTypeCustom];
        sectionButton.frame = CGRectMake(0, 0, sectionView.frame.size.width, sectionView.frame.size.height -10);
        sectionButton.center = sectionView.center;
        sectionButton.tag = section;
        //    sectionButton.backgroundColor = [UIColor yellowColor];
        [sectionButton addTarget:self action:@selector(ExpandCell:) forControlEvents:UIControlEventTouchUpInside];
        [sectionView addSubview:sectionButton];

        sectionView.backgroundColor = [UIColor clearColor];
        return sectionView;
    }

Just keep It simple And Flexible. Do it like this..

Step 1. Add one custom cell For Header View with UILabel for title.

Step 2. In cellForRowAtIndexPath , dequeueReusableCellWithIdentifier this cell .

Use condition as...

  `     if(section==0){
         Cell.title.text= @"your title for section 0"
        }        // here title is UILabel `

By doing this your code is Flexible enough for Any Future Changes!!!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM