UIView 显示在 UITableView 部分中,它在滚动时从未添加到
Posted
技术标签:
【中文标题】UIView 显示在 UITableView 部分中,它在滚动时从未添加到【英文标题】:UIView showing up in a UITableView section it was never added to when scrolling 【发布时间】:2009-12-04 17:43:14 【问题描述】:我有一个 UIView,要添加到特定部分(特别是第 1 部分)的单元格内容视图中,如下所示:
[cell.contentView addSubview:self.overallCommentViewContainer];
当我快速向上/向下滚动时 - UIView 出现在第 0 节中 - 即使我从未将 UIView 添加到第 0 节中的任何单元格中。
下面是我的cellForRowAtIndexPath
方法的详细介绍:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *kCustomCellID = @"CustomCellID";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCustomCellID];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kCustomCellID] autorelease];
// Configure the cell.
switch(indexPath.section)
case 0:
// other code
break;
case 1:
// add the overall comment view container to the cell
NLog(@"adding the overallCommentViewContainer");
[cell.contentView addSubview:self.overallCommentViewContainer];
NLog(@"creating the row at: Section %d, Row %d", indexPath.section, indexPath.row);
break;
return cell;
【问题讨论】:
我认为这与细胞重用有关。但是,我不确定提供答案 【参考方案1】:如果 UITableView 有可供重用的单元格,它的 dequeueReusableCellWithIdentifier 方法将很高兴地为第 0 节返回一个单元格,该单元格最初在第 1 节中使用!我建议您使用这样的方法将它们分开:
UITableViewCell *cell;
// Configure the cell.
switch(indexPath.section)
case 0:
cell = [tableView dequeueReusableCellWithIdentifier:@"Section0Cell"];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Section0Cell"] autorelease];
// other code
break;
case 1:
cell = [tableView dequeueReusableCellWithIdentifier:@"Section1Cell"];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Section1Cell"] autorelease];
// add the overall comment view container to the cell
NLog(@"adding the overallCommentViewContainer");
[cell.contentView addSubview:self.overallCommentViewContainer];
NLog(@"creating the row at: Section %d, Row %d", indexPath.section, indexPath.row);
break;
return cell;
关键是为您正在使用的每种类型的单元格使用不同的标识符字符串,该字符串不能与表格中的其他单元格互换。
【讨论】:
效果很好 - 现在一切都在原处!谢谢!以上是关于UIView 显示在 UITableView 部分中,它在滚动时从未添加到的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 标题部分的高度不会为自定义 UIView() 类自动调整
如何自定义 UITableView 中部分的 UIView?
如何从 ViewController 中的 xib (nib) 实例化 UIView / UITableView