【问题标题】:how to add 5 different custom cells in tableView如何在 tableView 中添加 5 个不同的自定义单元格
【发布时间】:2012-12-06 21:08:14
【问题描述】:

我想在我的表格视图中显示来自网络的不同数据,但我不知道如何在表格的一个部分的单独单元格中显示它们,任何人都可以帮助我显示 在一个单元格中

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

【问题讨论】:

  • 恕我直言,如果您接受更多答案,您将获得更多帮助。这只是我在 SO 上的经验。
  • 另外,您是在问如何创建 5 个不同的自定义单元格,或者如何使用“stock iOS”UITableViewCells 更改数据?
  • 我试图通过只创建一个自定义单元格来节省我的时间,但如果您想用另外 5 个自定义单元格显示它就可以了
  • 我只是想更好地了解您要做什么;下面的答案是要走的路!
  • 只有我一个对每个单元格都创建一个UIViewController 感到奇怪吗?

标签: iphone ios ios5 uitableview


【解决方案1】:

试试这个代码:

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

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

【讨论】:

  • 我已经试过了,它不起作用它只给我第一个单元格:(
  • 你能再试一次吗?我没有使用相同的对象将值传递给 textLabel。那么,您确定您的对象属性是 NSString 类型吗?
  • 我相信提问者正试图将数组中每个元素的所有数据放入一个单元格中......我认为这只给他第一个单元格的原因是因为他的数组只有一个元素在其中,当应用程序尝试填充表格时,它只会给他第一个单元格。肯定需要创建一个自定义单元格以容纳从数组“dataArray”中提取的“应用程序”对象中的所有数据查看此链接stackoverflow.com/questions/4917027/…
  • 您好 El Guapo,如果提问者的意思是喜欢您的评论,则应该跟踪您的建议方式。最好的:)
【解决方案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;
}

【讨论】:

    【解决方案3】:

    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。

    【讨论】:

      【解决方案4】:

      您可以简称为这段代码

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

      【讨论】:

        【解决方案5】:
        - (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);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-25
          • 1970-01-01
          • 2018-02-10
          • 1970-01-01
          • 1970-01-01
          • 2016-04-21
          • 2015-11-21
          • 1970-01-01
          相关资源
          最近更新 更多