表格中的数据会在我们向上滚动或向下滚动页面时显示和消失

问题描述

| 我已经创建了一个分组的表格视图,如下图所示。但是,当我们向上滚动(或)向下滚动页面时,表格行中的数据会出现并消失,当我们向上滚动前两行时(视图之外)会上升(如果我们向下滚动),那么两行的值将相同,是这样吗?谁能帮我   提前致谢。 像下面的代码,我正在设计表单元格,其中“ 0”是类,我正在创建像标签框架,文本字段框架
- (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,40)];
                cell.accessoryView = tfText[1];
                tfText[1].delegate=self;
                tfText[1].placeholder =@\"<Student Age>\";

                cell.primaryLabel.text =@\"Student Age: \";


            } 
}
}
    

解决方法

  cell = [[[CustomCellStudentData alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
    ,
UITableView
重复使用单元,以免造成内存中断。一旦两个单元上升,它们就会进入可重复使用的单元池。如果池不为空,则“ 4”从该池返回一个单元格(此处与标识符有关)。由于表视图需要用于滚动新行的单元格,因此它从池中获取单元格并将其提供给您进行重新配置。因此,为行0和1配置单元格时附加到该单元格的文本字段仍然保留,除非您明确删除。由于我们没有要获得的单元格,因此我们应该重置所做的所有自定义并将其配置为新的单元格。在这种情况下,无论进入哪个单元格,都应先删除文本字段作为附件视图。     ,迪帕克所说的是正确的。 将来,如果您将任何subView添加到单元格视图,请添加到他的答案中。在单元上添加任何内容之前,请将其删除。采用
for(UIView * view in cell.contentView.subviews){
      [view removeFromSuperview]; view = nil;
}
在自定义单元之前。 是的,请提高您的接受率。回到您之前提出的问题并接受一些答案应该会有所帮助。