我创建了一个分组表视图,如下图所示。但是当我们向上滚动(或)向下滚动页面时,表格行中的数据会出现和消失,当我们向上滚动时,前两行会向上(超出视图)然后如果我们向下滚动两行将采用相同的值,是这样吗?任何人都可以帮助我
提前致谢。
就像下面的代码我正在设计表格单元格,其中CustomCellStudentData
是类我在那里创建像标签框架,文本字段框架
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCellStudentData *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[CustomCellStudentData alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
switch(indexPath.section)
{
case 0:
switch (indexPath.row)
{
case 0:
{
tfText[0] = [[UITextField alloc] initWithFrame:CGRectMake(100,10, 200, 40)];
cell.accessoryView = tfText[0];
tfText[0].delegate=self;
tfText[0].placeholder =@"<Student Name>";
cell.primaryLabel.text =@"Student Name: ";
}
break;
case 1:
{
tfText[1] = [[UITextField alloc] initWithFrame:CGRectMake(100,10, 200, 40)];
cell.accessoryView = tfText[1];
tfText[1].delegate=self;
tfText[1].placeholder =@"<Student Age>";
cell.primaryLabel.text =@"Student Age: ";
}
}
}
答案 0 :(得分:1)
UITableView
重用单元格,以免陷入记忆。一旦两个细胞上升,它们就会进入可重复使用的细胞池。如果池不为空,dequeueReusableCellWithIdentifier:
将返回该池中的单元格(此处存在对标识符的依赖性)。由于表视图需要滚动新行的单元格,因此它从池中获取单元格并将其提供给您进行重新配置。因此,在为行0和1配置单元格时附加到单元格的文本字段仍然保留,除非您明确删除。由于我们没有获得哪些单元格,因此我们应该重置我们所做的所有自定义,并将其配置为新单元格。在这种情况下,无论进入的单元格如何,都应首先将文本字段作为附件视图删除。
答案 1 :(得分:0)
cell = [[[CustomCellStudentData alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
答案 2 :(得分:0)
迪帕克说的是对的。 如果您将任何子视图添加到单元格视图,将来添加到他的答案。在添加任何内容之前从单元格中删除。使用
for(UIView * view in cell.contentView.subviews){
[view removeFromSuperview]; view = nil;
}
在自定义单元格之前。
是的,请提高您的录取率。回到之前提出的问题并接受一些答案应该会有所帮助。