如何在tableView中添加5个不同的自定义单元格

时间:2012-12-19 13:40:33

标签: iphone ios ios5 uitableview

我想在我的tableview中显示来自web的不同数据但是我没有得到如何在表的一个部分中的单独单元格中显示它们可以任何人帮我显示 在一个单元格中

cell.textLabel.text=app.i_name;

在第二个单元格中

cell.textLabel.text=app.i_phone;

在第三个单元格中

cell.textLabel.text=app.i_hours;

在第四个单元格中

cell.textLabel.text=app.i_address;

在第五个单元格中

cell.textLabel.text=app.i_email;

我索引行的单元格为

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

    static NSString *CellIdentifier = @"Single Cell";
    SingleCell *cell =(SingleCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil) {
        UIViewController *c = [[UIViewController alloc] initWithNibName:@"SingleCell" bundle:nil];
        cell = (SingleCell *) c.view;
        //[c release];

    }
appDC * application = [dataArray objectAtIndex:[indexPath row]];

        //cell.namelbl.text=application.application_name;


return cell;
}

5 个答案:

答案 0 :(得分:5)

试试这段代码:

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

    static NSString *CellIdentifier = @"Single Cell";
    SingleCell *cell =(SingleCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil) {
        UIViewController *c = [[UIViewController alloc] initWithNibName:@"SingleCell" bundle:nil];
        cell = (SingleCell *) c.view;
        //[c release];

    }
    appDC * application = [dataArray objectAtIndex:[indexPath row]];

    //cell.namelbl.text=application.application_name;
    if (indexPath.row == 0)
    {
        cell.textLabel.text=application.i_name;
    }
    else if (indexPath.row == 1)
    {
        cell.textLabel.text = application.i_iphone;
    }
    else if (indexPath.row == 2)
    {
        cell.textLabel.text = application.i_hours;
    }
    else if (indexPath.row == 3)
    {
        cell.textLabel.text = application.i_address;
    }
    else
    {
        cell.textLabel.text = application.i_email;
    }



    return cell;
}

希望这个答案有所帮助。干杯

答案 1 :(得分:2)

我通过执行此代码解决了这个问题,感谢所有提供建议

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

    static NSString *CellIdentifier = @"CellForInfo";
    CellForInfo *cell =(CellForInfo *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil) {
        UIViewController *c = [[UIViewController alloc] initWithNibName:@"CellForInfo" bundle:nil];
        cell = (CellForInfo *) c.view;
        //[c release];



     }

    appDC * application = [dataArray objectAtIndex:0];
    if (indexPath.row == 0)
    {
        cell.lblinfo.text=application.i_name;
    }
     if (indexPath.row == 1)
    {
        cell.lblinfo.text = application.i_phone;
    }
     if (indexPath.row == 2)
    {
        cell.lblinfo.text = application.i_hours;
    }
     if (indexPath.row == 3)
    {
        cell.lblinfo.text = application.i_address;
    }
    if (indexPath.row == 4)
    {
        cell.lblinfo.text = application.i_email;
    }



    return cell;
}

答案 2 :(得分:1)

IKQ的代码示例应该有效。但我建议尝试我的TableKit库。这样代码就会更加清晰优雅:

- (void)viewDidLoad
{
    [super viewDidLoad];

    TKStaticCell* nameCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Name" detailText:app.i_name];
    TKStaticCell* phoneCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Phone" detailText:app.i_phone];
    TKStaticCell* hoursCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Hours" detailText:app.i_hours];
    TKStaticCell* addressCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Address" detailText:app.i_address];
    TKStaticCell* emailCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"email" detailText:app.i_email];
    TKSection* section = [TKSection sectionWithCells:nameCell, phoneCell, hoursCell, addressCell, emailCell, nil];
    self.sections = [NSArray arrayWithObject:section];
}

此外,该库允许定义自定义单元格而不是TKStaticCell

答案 3 :(得分:0)

您可以将此代码简称

            CellForInfo * cellForInfo = (CellForInfo *)[tableView dequeueReusableCellWithIdentifier:nil];

            if (cellForInfo ==nil) {
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellForInfo" owner:self options:nil];
                cellForInfo = [nib objectAtIndex:0];
            }

答案 4 :(得分:-1)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self tableInfo];
}


- (void) tableInfo
{

    NSArray *keysArray = @[@"CampaignsName",@"BusinessName",@"BusinessType",@"CampaignsType",@"Distance",@"Daysleft",@"CampaignImage",];

    NSArray *valuesArray1 =[NSArray arrayWithObjects:@"5 % OFF ",@"Coffe Shop",@"1",@"1",@"0.10 Miles",@"5 days Left",@"b2.png", nil];

    NSArray *valuesArray2 = [NSArray arrayWithObjects:@"win $2 for you & charity ",@"Red Tommato",@"2",@"2",@"20 Miles",@"2 days Left",@"b1.png", nil];

    NSArray *valuesArray3 = [NSArray arrayWithObjects:@"Buy dogs food & get a one more",@"Pet Care",@"3",@"3", @"30 Miles",@"10 days Left",@"b2.png", nil];

    NSArray *valuesArray4 =[NSArray arrayWithObjects:@"win $2 for you & charity ",@"Red Tommato",@"1",@"1",@"0.10 Miles",@"7 days Left",@"b2.png", nil];



    NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:valuesArray1 forKeys:keysArray];

    NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:valuesArray2 forKeys:keysArray];

    NSDictionary *dict3 = [NSDictionary dictionaryWithObjects:valuesArray3 forKeys:keysArray];

    NSDictionary *dict4 = [NSDictionary dictionaryWithObjects:valuesArray4 forKeys:keysArray];



    self.tableArray = [[NSArray alloc]initWithObjects:dict1,dict2,dict3,dict4,dict3,dict1,dict4,dict2,nil];
    NSLog(@"Array %@",tableArray);
    [self.tableObj reloadData];
}

#pragma  mark table view datasource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.tableArray count];
}

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

    UITableViewCell *cell = [self tableCustomView:tableView cellForRowAtIndexPath:indexPath];
    return cell;
}

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



    static NSString *CellIdentifier1 = @"CustomCellIdentifier";
    static NSString *CellIdentifier2 = @"CustomCellIdentifier2";


    if (indexPath.row % 2 != 0)
    {
        CustomCell2 *cell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
        if (cell2 == nil)
        {

            NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell2" owner:self options:nil];
            cell2 = [topObjects objectAtIndex:0];
        }


        id object = [self.tableArray objectAtIndex:indexPath.row];


        cell2.CampaignsNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsName"]];
        cell2.BusinessNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessName"]];
        cell2.DistanceLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Distance"]];
        cell2.DaysleftLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Daysleft"]];

        cell2.cellBackImg.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignImage"]]];


        int businessType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessType"]] integerValue];

        NSLog(@": %d",businessType);

        switch (businessType)
        {


            case 1:

                cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"RETL@2x.png"];

                break;
            case 2:

                cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"BTY.png"];

                break;
            case 3:

                cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"];

                break;

            default:
                break;
        }


        int CampaignsType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsType"]] integerValue];

        switch (CampaignsType)
        {

            case 1:

                cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t3.png"];

                break;
            case 2:

                cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t2.png"];

                break;
            case 3:

                cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"];

                break;

            default:
                break;
        }

        mainCell = cell2 ;


    }

    else
    {
        CustomCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
        if (cell1 == nil)
        {

            NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil];
            cell1 = [topObjects objectAtIndex:0];
        }


        id object = [self.tableArray objectAtIndex:indexPath.row];


        cell1.CampaignsNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsName"]];
        cell1.BusinessNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessName"]];
        cell1.DistanceLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Distance"]];
        cell1.DaysleftLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Daysleft"]];

        cell1.cellBackImg.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignImage"]]];


        int businessType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessType"]] integerValue];

        NSLog(@": %d",businessType);

        switch (businessType)
        {


            case 1:

                cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"RETL@2x.png"];

                break;
            case 2:

                cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"BTY.png"];

                break;
            case 3:

                cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"];

                break;

            default:
                break;
        }


        int CampaignsType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsType"]] integerValue];

        switch (CampaignsType)
        {

            case 1:

                cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t3.png"];

                break;
            case 2:

                cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t2.png"];

                break;
            case 3:

                cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"];

                break;

            default:
                break;
        }

        mainCell = cell1 ;
    }


    return mainCell;

    NSLog(@"Index Path is :%d %d", indexPath.section,indexPath.row);
}