1

UITableViewCell滚动表格视图后,自定义单元格的内容(例如UILabel文本、UIButton标题)重置为默认值(标签、按钮)。我在单个表格视图中使用自定义单元格的数量。这些是我用来在单个表格视图中生成多个自定义单元格的代码,每个单元格具有不同的标识符和不同的自定义单元格名称。

static NSString *CellIdentifier = @"cell";

UITableViewCell *cell = (customCell1 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) cell = [[customCell1 alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
{
    NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"customCell1" owner:self options:nil];
    for (id currentObject in topLevelObjects)
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]])
        {
            cell = (customCell1 *)currentObject;
            break;
        }
    }
}

static NSString *CellIdentifier2 = @"cell2";

UITableViewCell *cell2 = (customCell2 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

if (cell2 == nil) cell2 = [[customCell2 alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
{
    NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"customCell2" owner:self options:nil];
    for (id currentObject in topLevelObjects)
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]])
        {
            cell2 = (customCell2 *)currentObject;
            break;
        }
    }
}
cell.label = @"Test";
[cell2.button setTitle:@"Test Button" forState:UIControlStateNormal];
return cell;
return cell2;
4

2 回答 2

0

当您将单元格/单元格 2 设置为从 NIB 加载的 UITableViewCell 时,重用标识符将是 XIB 中设置的任何内容。

无论如何,您粘贴的代码有很多问题。那是你真正使用的那个吗?cell2 将永远不会返回。

于 2013-11-13T14:49:46.157 回答
0

表格视图中的单元格是通过使用单元格标识符出队动态创建的。在上面提到的代码中,将始终返回第一个“返回单元格”;数据源方法在创建后一次只能返回一个单元格。因此,如果您想根据您的使用情况返回一个单元格,您必须执行以下操作

  • (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{ // 理想情况下,应该像这样创建自定义单元格

if(condition when you wan this cell1)
{
    //create the custom cell1 here  and return it as given below

    static NSString *cellIdentifier = @"MyCustomCell";

    // Similar to UITableViewCell
    MyCustomCell *cell = (MyCustomCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    return cell1;
}
else if(when you want to create this cell2)
{
   // create the custom cell2 here  and return it
    return cell2;
}
// Create the default UI table view cell and return it . if any of the above condition did not satisfied, it will return the default cell.

// 在此处创建默认的 UI 表并返回它返回单元格;}

于 2015-06-21T18:47:57.503 回答