1

我有一个带有一个部分的 UITableView。该部分中的所有单元格都有派生自 UITableViewCell 的子类(称为 PLContactCell)的单元格。

我想做的是,仅对于表格的最后一行,不使用 PLContactCell。我只想使用一个普通的 UITableViewCell ,我可以随意格式化它。我还希望能够让这个单元格不响应被窃听。

我最初的 cellForRowAtIndexPath 方法是:

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

PLContactCell *cell = [tableView dequeueReusableCellWithIdentifier:[PLContactCell   reuseIdentifier]];

  if (!cell) {
      cell = [PLContactCell reusableCell];
      cell.delegate = self;
  }

  id modelObject = [[sections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

  if ([modelObject isKindOfClass:[NSString class]]) {
    [cell configureWithString:modelObject];
  } else {
      [cell configureWithUser:modelObject];
  }

  return cell;
}

编辑 所以我尝试在 XIB 文件中创建一个 UITableView 单元格,并向其中添加了“newCell”的重用标识符。然后我添加了这段代码:

if (indexPath.row == [[sections objectAtIndex:indexPath.section] count] - 1) {
         NSString *CellIdentifier = @"newCell";
         noFormatCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}

这没有任何作用。我的问题是,我如何访问该部分的最后一行以及如何使该单元格不是 PLContactCell 而是 UITableView 单元格。

4

1 回答 1

0

如果它总是在最后,你可以考虑使用 UITableView 的页脚视图。然后,您可以在 UITableViewDataSource 之外保留一些额外的逻辑。

如果它必须作为一个单元格,您必须在最后一部分添加额外的行数,然后执行 if 语句检查以在您的 -tableView:cellForRowAtIndexPath: 实现中注意它。我强烈建议您尝试使用页脚方法,因为从现在开始几个月/几年后,它会更清晰、更容易弄清楚您在做什么。

这是一些代码。请注意,如果您在 UITableView 中使用分组样式,则需要创建另一个部分。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   if (section == sections.count - 1)  //Looking for last section
   {
      return [sections objectAtIndex:section].count + 1; //Add one to the last section
   }

   return [sections objectAtIndex:section].count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   NSInteger row = indexPath.row;


   if ((sections.count == indexPath.section) && [sections objectAtIndex:indexPath.section].count == indexPath.row)
   {
       //Here you would create and return your UITableViewCell
   }

PLContactCell *cell = [tableView dequeueReusableCellWithIdentifier:[PLContactCell   reuseIdentifier]];

  if (!cell) {
      cell = [PLContactCell reusableCell];
      cell.delegate = self;
  }

  id modelObject = [[sections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

  if ([modelObject isKindOfClass:[NSString class]]) {
    [cell configureWithString:modelObject];
  } else {
      [cell configureWithUser:modelObject];
  }

  return cell;
}
于 2013-06-28T15:07:33.913 回答