如何创建下拉表视图使用两个自定义单元格?

时间:2015-09-04 10:29:13

标签: objective-c uitableview

我有两个单元格用于节,另一个用于行。

这是我的代码

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return arrname.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    if(collapse==section)
    {
        return [arrDescription count]+1;
    }
    else
    {
        return 1;
    }

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

//    productCell =[[productScreenCell alloc]init];
    productCell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
    productSub=[tableView dequeueReusableCellWithIdentifier:@"cell1"];
if(indexPath.row==0)
{
    if(arrname.count>0)
    {
        NSString *str=[NSString stringWithFormat:LocalImage@"%@",[arrimages objectAtIndex:indexPath.row]];

        productCell.lblCostProduct.text=[NSString stringWithFormat:@"%@",[arrcost objectAtIndex:indexPath.section]];
        productCell.imgProduct.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:str]]];
        productCell.backgroundColor=[UIColor colorFromHexString:@"#232323"];
        productCell.lblProductScreen.text=[NSString stringWithFormat:@"%@",[arrname objectAtIndex:indexPath.section]];
        [productCell.btnClick addTarget:self action:@selector(touchup:) forControlEvents:UIControlEventTouchUpInside];
        productCell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
    }
}
    else
    {
         productSub.lblSubProduct.text=[NSString stringWithFormat:@"%@",[arrDescription objectAtIndex:indexPath.row-1]];
    }

//

        productCell.btnClick.backgroundColor=[UIColor colorFromHexString:@"#ffc400"];
        productCell.btnClick.tag=indexPath.row;
    return productCell;

}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{  if (indexPath.row == 0 && collapse != indexPath.section) {
            collapse = (int)indexPath.section;
            [tableView reloadData];
        }
        else
        {

        }

    }

我搜索了许多下拉代码片段,但一切都不清楚或者它应该是第三方程序,任何不要只为我提供简单的下拉表列表编码。

1 个答案:

答案 0 :(得分:1)

这里有几个问题:首先是“正确的”问题。这样做的方法是使用节标题的内置功能。此方法允许您创建并返回一个UIView,该UIView用作tableview中任何部分的标题:

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

这意味着对于numberOfRowsInSection,你只返回一个值 - 该部分的行数,我想你说的是一行。您还有一个numberOfSections方法 - 如果只有一个部分,您将再次返回一个。

然后你的cellForRowAtIndexPath方法只关心设置你的单行,标题将在我提到的viewForHeaderInSection方法中设置。希望这能指出你正确的方向。