TableView多个原型单元格和行数

时间:2015-04-17 07:49:23

标签: ios objective-c uitableview

我想在第一个原型单元格中有多行;第二个单元格必须是静态的。

我试过这样做,但我不能让第二个原型单元静止。我正在为单元格使用自定义类:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

DetailCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ss"];
if (cell.tag == 0)
    return 8;
else if (cell.tag == 1)
    return 1;

else
    return 1;
}

只有第一个获得回报,我甚至看不到这两个按钮。我做错了什么?

2 个答案:

答案 0 :(得分:1)

首先,除非您指定UITableView使用静态单元格,否则不能使用它们。并且您不能在单个tableview中混合原型单元格和静态单元格。

根据您的要求,您应该创建两个原型单元,而不是将一个单元作为静态单元格:

一个原型 - >为你的动态细胞

第二个原型 - >对于您的静态单元格

现在更改TableView数据源,如下所示:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    { 
        // suppose [self.dynamicArray count] = 8
        //Adding 1 for your static cell

        return [self.dynamicArray count] +  1;

    }

假设您要显示具有第二个Prototype(静态单元格表​​示)的最后一个单元格,然后将cellForRowAtIndexPath实现为:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
        if (indexPath.row < [self.dynamicArray count] ) 
        {
                // normal dynamic logic here
            NSString *cellIdentifier = @"DynamicCellID"
            // dequeue and configure for [self.dynamicArray objectAtIndex:indexPath.row]
        } 
   //this will be the last cell in which you want the second  prototype cell acting as Static cell
   else  
   {
 // dequeue and configure my second prototype cell for indexPath.row
        NSString *cellIdentifier = ... // id for one of my static cells
    }
}

您可以使用相同的逻辑在heightForRowAtIndexPath方法中为两个原型单元实现不同的高度。

答案 1 :(得分:0)

我确实喜欢这个

static NSString * cellIdentifier;

if(indexPath.section == 8)
{
cellIdentifier = @"Intake";
}
else
    cellIdentifier =@"CollegeDetail";

CollegeDetailCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
    cell=[[CollegeDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}