我的表视图的数据一次又一次重装?

编程入门 行业动态 更新时间:2024-10-27 01:21:19
本文介绍了我的表视图的数据一次又一次重装?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在从JSON服务器的响应,并表明对表视图数据,但是当我向下滚动数据将再次重新显示上重叠每个单元。谁能告诉我,为什么会这样呢?我的code是below`

self.title = @表数据;    如果(检查)    {        self.title = @第二页;    }    [自送出数据]    deliveryCases = [[UITableView的页头] initWithFrame:方法CGRectMake(0,0,320,480)];    deliveryCases.backgroundColor =的UIColor clearColor]    deliveryCases.dataSource =自我;    deliveryCases.delegate =自我;    [self.view addSubview:deliveryCases];    myCaseName = [[NSArray的页头]初始化]; - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath{    静态的NSString * cellIdentifier = @CellIdentifier    * UITableViewCell的细胞= [deliveryCases dequeueReusableCellWithIdentifier:cellIdentifier];    //显示在表视图中的数据    D = [deliveryCaseArray objectAtIndex:indexPath.row];    如果(细胞==零)    {        电池= [[UITableViewCell的页头] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];    }    myCaseName = d.caseName;    *的UILabel = caseNameLbl [的UILabel页头] initWithFrame:方法CGRectMake(70,10,100,50);    caseNameLbl.text = [的NSString stringWithFormat:@%@,myCaseName]    caseNameLbl.textColor =的UIColor blackColor]    UIFont * boldFontlblDate = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];    [caseNameLbl并入setfont:boldFontlblDate];    caseNameLbl.backgroundColor =的UIColor clearColor]    [cell.contentView addSubview:caseNameLbl];    *的UILabel = caseDateLbl [的UILabel页头] initWithFrame:方法CGRectMake(160,10,100,50);    NSDateFormatter *格式化= [[NSDateFormatter的alloc]初始化];    formatter.dateFormat = @M / D / YYYY;    的NSString * dateString = [格式化stringFromDate:[NSDate的日期]];    d.date = dateString;    caseDateLbl.text = [的NSString stringWithFormat:@%@,dateString]    caseDateLbl.textColor =的UIColor blackColor]    UIFont * boldFontlblStatus = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];    [caseDateLbl并入setfont:boldFontlblStatus];    caseDateLbl.backgroundColor =的UIColor clearColor]    [cell.contentView addSubview:caseDateLbl];    *的UILabel = caseStatusLbl [的UILabel页头] initWithFrame:方法CGRectMake(250,10,100,50);    caseStatusLbl.text = [的NSString stringWithFormat:@%@,d.status]    caseStatusLbl.textColor =的UIColor blackColor]    UIFont * boldFontlblTrack = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];    [caseStatusLbl并入setfont:boldFontlblTrack];    caseStatusLbl.backgroundColor =的UIColor clearColor]    [cell.contentView addSubview:caseStatusLbl];    [单元setUserInteractionEnabled:YES];    tableView.allowsSelection = YES;    返回细胞;} - (NSInteger的)numberOfSectionsInTableView:(UITableView的*)tableView3{    返回1;} - (NSInteger的)的tableView:(UITableView的*)的tableView numberOfRowsInSection:(NSInteger的)部分{    返回deliveryCaseArray.count;} - (CGFloat的)的tableView:(UITableView的*)的tableView heightForHeaderInSection:(NSInteger的)部分{    返回20.0;} - (UIView的*)的tableView:(UITableView的*)的tableView viewForHeaderInSection:(NSInteger的)部分{    的UIView * headerView = [[UIView的的alloc] initWithFrame:方法CGRectMake(0,0,350,10)];    *的UILabel = LBL1 [的UILabel页头] initWithFrame:方法CGRectMake(10,0,100,50);    lbl1.text = @#;    [headerView addSubview:LBL1];    *的UILabel LBL2 = [[的UILabel页头] initWithFrame:方法CGRectMake(70,0,100,50);    lbl2.text = @案例#;    [headerView addSubview:LBL2];    *的UILabel = lbl3 [的UILabel页头] initWithFrame:方法CGRectMake(160,0,100,50);    lbl3.text = @日期;    [headerView addSubview:lbl3];    *的UILabel = lbl4 [的UILabel页头] initWithFrame:方法CGRectMake(220,0,100,50);    lbl4.text = @状态类型;    [headerView addSubview:lbl4];    返回headerView;} - (无效)送出数据{        * NSUserDefaults的uidSave = [NSUserDefaults的standardUserDefaults]        的NSMutableDictionary *获取= [[的NSMutableDictionary的alloc]初始化];        [拿到的setObject:[uidSave valueForKey:@UID] forKey:@UID];        [拿到的setObject:@开放forKey:@型];        的NSLog(@字典数据是要拿到%@,获得);        NSData的* jsonData = [NSJSONSerialization dataWithJSONObject:获取选项:kNilOptions错误:无];        * NSString的jsonInputString = [[NSString的页头] initWithData:jsonData编码:NSUTF8StringEncoding];        * NSString的后期= [[NSString的页头] initWithFormat:@R =%@,jsonInputString]        NSURL * URL = [NSURL URLWithString:[的NSString stringWithFormat:@%@,caseTypeUrl]];        NSData的* POSTDATA = [交dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];        * NSString的postLength = [的NSString stringWithFormat:@%吕氏春秋,(无符号长)POSTDATA长度]];        NSMutableURLRequest *请求= [NSMutableURLRequest requestWithURL:URL的CachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120.0;        [要求setURL:URL]        [要求setHTTPMethod:@POST];        [申请的setValue:postLength forHTTPHeaderField:@内容长度];        [申请的setValue:@应用程序/ x-WWW的形式urlen codeDforHTTPHeaderField:@的Content-Type];        [要求setHTTPBody:POSTDATA];        NSError *错误;        NSURLResponse *响应;        NSData的* responseData = [NSURLConnection的sendSynchronousRequest:请求returningResponse:安培;响应错误:放大器;错误]        如果(responseData!=无)        {            jsonArray = [NSJSONSerialization JSONObjectWithData:responseData选项:kNilOptions错误:&放大器;错误]            的NSLog(@价值观=======%@,JSONArray),其中;        }        如果(错误)        {            的NSLog(@错误%@,error.description);            UIAlertView中* alertView = [[UIAlertView中页头] initWithTitle:@错误消息:@服务器没有响应委托:自我cancelButtonTitle:@取消otherButtonTitles:无,无]            [alertView秀]        }    //设置名称数组   deliveryCaseArray = [[NSMutableArray里的alloc]初始化];    //循环通过我们的JSON数组    的for(int i = 0; I< jsonArray.count;我++)    {        //创建对象        * NSString的DATE1 = [[jsonArray objectAtIndex:我] objectForKey:@日期];        * NSString的protracking2 = [[jsonArray objectAtIndex:我] objectForKey:@protracking];        * NSString的STATUS3 =​​ [[jsonArray objectAtIndex:我] objectForKey:@状态];        [deliveryCaseArray ADDOBJECT:[数据对象页头] initWithDate:日期1 andCaseName:protracking2和STATUS:STATUS3]];    }    [deliveryCases reloadData];}    `

解决方案

您正在对细胞的内容查看每次加子视图。只有当你的细胞是零,你应该添加子视图。修改此法

- (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath{    静态的NSString * cellIdentifier = @CellIdentifier    * UITableViewCell的细胞= [deliveryCases dequeueReusableCellWithIdentifier:cellIdentifier];//显示在表视图中的数据    D = [deliveryCaseArray objectAtIndex:indexPath.row];    myCaseName = d.caseName;    如果(细胞==零)    {        电池= [[UITableViewCell的页头] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];        *的UILabel = caseNameLbl [的UILabel页头] initWithFrame:方法CGRectMake(70,10,100,50);        caseNameLbl.text = [的NSString stringWithFormat:@%@,myCaseName]        caseNameLbl.textColor =的UIColor blackColor]        UIFont * boldFontlblDate = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];        [caseNameLbl并入setfont:boldFontlblDate];        caseNameLbl.backgroundColor =的UIColor clearColor]        [cell.contentView addSubview:caseNameLbl];        *的UILabel = caseDateLbl [的UILabel页头] initWithFrame:方法CGRectMake(160,10,100,50);        NSDateFormatter *格式化= [[NSDateFormatter的alloc]初始化];        formatter.dateFormat = @M / D / YYYY;        的NSString * dateString = [格式化stringFromDate:[NSDate的日期]];        d.date = dateString;        caseDateLbl.text = [的NSString stringWithFormat:@%@,dateString]        caseDateLbl.textColor =的UIColor blackColor]        UIFont * boldFontlblStatus = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];       [caseDateLbl并入setfont:boldFontlblStatus];       caseDateLbl.backgroundColor =的UIColor clearColor]       [cell.contentView addSubview:caseDateLbl];       *的UILabel = caseStatusLbl [的UILabel页头] initWithFrame:方法CGRectMake(250,10,100,50);       caseStatusLbl.text = [的NSString stringWithFormat:@%@,d.status]       caseStatusLbl.textColor =的UIColor blackColor]       UIFont * boldFontlblTrack = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];       [caseStatusLbl并入setfont:boldFontlblTrack];       caseStatusLbl.backgroundColor =的UIColor clearColor]       [cell.contentView addSubview:caseStatusLbl];   }[单元setUserInteractionEnabled:YES];tableView.allowsSelection = YES;返回细胞;}

I am getting the response from json server and show that data on table view but when i scroll down the data will show again again overlaps on each cell. Anyone can tell me why this happening?My Code is below`

self.title=@"Table Data"; if(check) { self.title = @"Second Page"; } [self sendData]; deliveryCases = [[UITableView alloc]initWithFrame:CGRectMake(0,0, 320, 480)]; deliveryCases.backgroundColor = [UIColor clearColor]; deliveryCases.dataSource = self; deliveryCases.delegate = self; [self.view addSubview:deliveryCases]; myCaseName = [[NSArray alloc]init]; -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"CellIdentifier"; UITableViewCell *cell = [deliveryCases dequeueReusableCellWithIdentifier:cellIdentifier]; // Showing data in table view d = [deliveryCaseArray objectAtIndex:indexPath.row]; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } myCaseName = d.caseName; UILabel *caseNameLbl =[[UILabel alloc]initWithFrame:CGRectMake(70, 10, 100 ,50)]; caseNameLbl.text = [NSString stringWithFormat:@"%@",myCaseName]; caseNameLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblDate = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseNameLbl setFont:boldFontlblDate]; caseNameLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseNameLbl]; UILabel *caseDateLbl =[[UILabel alloc]initWithFrame:CGRectMake(160, 10, 100 ,50)]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"M/d/yyyy"; NSString *dateString =[formatter stringFromDate:[NSDate date]]; d.date = dateString; caseDateLbl.text = [NSString stringWithFormat:@"%@", dateString]; caseDateLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblStatus= [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseDateLbl setFont:boldFontlblStatus]; caseDateLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseDateLbl]; UILabel *caseStatusLbl =[[UILabel alloc]initWithFrame:CGRectMake(250, 10, 100 ,50)]; caseStatusLbl.text = [NSString stringWithFormat:@"%@", d.status]; caseStatusLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblTrack= [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseStatusLbl setFont:boldFontlblTrack]; caseStatusLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseStatusLbl]; [cell setUserInteractionEnabled:YES]; tableView.allowsSelection=YES; return cell; } -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView3 { return 1; } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return deliveryCaseArray.count; } -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 20.0; } -(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 350 , 10)]; UILabel *lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 100 , 50)]; lbl1.text = @"#"; [headerView addSubview:lbl1]; UILabel *lbl2 = [[UILabel alloc] initWithFrame:CGRectMake(70, 0, 100, 50)]; lbl2.text = @"Case #"; [headerView addSubview:lbl2]; UILabel *lbl3 = [[UILabel alloc] initWithFrame:CGRectMake(160, 0, 100, 50)]; lbl3.text = @"Date"; [headerView addSubview:lbl3]; UILabel *lbl4 = [[UILabel alloc] initWithFrame:CGRectMake(220, 0, 100, 50)]; lbl4.text = @"Status Type"; [headerView addSubview:lbl4]; return headerView; } -(void)sendData { NSUserDefaults *uidSave = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *get = [[NSMutableDictionary alloc]init]; [get setObject:[uidSave valueForKey:@"uid"]forKey:@"uid"]; [get setObject:@"open" forKey:@"type"]; NSLog(@"Dictionary Data which is to be get %@",get); NSData* jsonData = [NSJSONSerialization dataWithJSONObject:get options:kNilOptions error:nil]; NSString *jsonInputString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSString *post = [[NSString alloc]initWithFormat:@"r=%@",jsonInputString]; NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"%@",caseTypeUrl]]; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120.0]; [request setURL:url]; [request setHTTPMethod:@"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:postData]; NSError *error; NSURLResponse *response; NSData *responseData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; if (responseData != nil) { jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; NSLog(@"Values =======%@",jsonArray); } if (error) { NSLog(@"error %@",error.description); UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Server not responding" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil, nil]; [alertView show]; } // Set up names array deliveryCaseArray = [[NSMutableArray alloc]init]; // Loop through our json Array for (int i = 0 ; i <jsonArray.count; i++) { //create object NSString *date1 = [[jsonArray objectAtIndex:i]objectForKey:@"date"]; NSString *protracking2 = [[jsonArray objectAtIndex:i]objectForKey:@"protracking"]; NSString *status3 = [[jsonArray objectAtIndex:i]objectForKey:@"status"]; [deliveryCaseArray addObject:[[DataObjects alloc]initWithDate:date1 andCaseName:protracking2 andStatus:status3]]; } [deliveryCases reloadData]; } `

解决方案

You are adding subview on cell's contentview each time. You should add subview only when your cell is nil. Modify this method

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"CellIdentifier"; UITableViewCell *cell = [deliveryCases dequeueReusableCellWithIdentifier:cellIdentifier]; // Showing data in table view d = [deliveryCaseArray objectAtIndex:indexPath.row]; myCaseName = d.caseName; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; UILabel *caseNameLbl =[[UILabel alloc]initWithFrame:CGRectMake(70, 10, 100 ,50)]; caseNameLbl.text = [NSString stringWithFormat:@"%@",myCaseName]; caseNameLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblDate = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseNameLbl setFont:boldFontlblDate]; caseNameLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseNameLbl]; UILabel *caseDateLbl =[[UILabel alloc]initWithFrame:CGRectMake(160, 10, 100 ,50)]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"M/d/yyyy"; NSString *dateString =[formatter stringFromDate:[NSDate date]]; d.date = dateString; caseDateLbl.text = [NSString stringWithFormat:@"%@", dateString]; caseDateLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblStatus= [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseDateLbl setFont:boldFontlblStatus]; caseDateLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseDateLbl]; UILabel *caseStatusLbl =[[UILabel alloc]initWithFrame:CGRectMake(250, 10, 100 ,50)]; caseStatusLbl.text = [NSString stringWithFormat:@"%@", d.status]; caseStatusLbl.textColor=[UIColor blackColor]; UIFont * boldFontlblTrack= [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [caseStatusLbl setFont:boldFontlblTrack]; caseStatusLbl.backgroundColor =[UIColor clearColor]; [cell.contentView addSubview:caseStatusLbl]; } [cell setUserInteractionEnabled:YES]; tableView.allowsSelection=YES; return cell; }

更多推荐

我的表视图的数据一次又一次重装?

本文发布于:2023-11-27 23:54:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:视图   重装   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!