UITableviewcell内容更新反映到其他单元格

编程入门 行业动态 更新时间:2024-10-25 20:18:59
本文介绍了UITableviewcell内容更新反映到其他单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在表格视图中使用8个单元格.每个单元格都有一组组件,如UIButton,UILabel和UISlider.当我更新第6个单元格时,它反映到第1个单元格.同样,如果我更新第7个单元格,它会反映到第2个单元格.

I am using 8 cells in a tableview. Each cell having group of components like UIButton, UILabel and UISlider. When I update 6th cell, it reflects to 1st cell. Similarly, if I update 7th cell, it reflects to 2nd cell.

删除单元格代码:

{ [buttonarray removeObjectAtIndex:delpath.row]; viewcount--; ListCell1 *cell=(ListCell1 *)[table cellForRowAtIndexPath:delpath]; cell.slider.value=0; cell.qlabel.text=@"1"; cell.slabel.text=@"1"; cell.n=1; [cell.button1 setTitle:@"240" forState:UIControlStateNormal]; for (int m=0; m<7; m++) { [[cell.myarray objectAtIndex:m]setImage:[UIImage imageNamed:@"Num2.png"] forState:UIControlStateNormal]; UIButton *but=[cell.myarray objectAtIndex:m]; but.tag=0; } [self->table deleteRowsAtIndexPaths:[NSArray arrayWithObjects:delpath, nil] withRowAnimation:UITableViewRowAnimationFade]; [table reloadData]; delpath=NULL; }

按下按钮

-(void)buttonpressed:(id)sender { viewcount++; table.delegate=self; table.dataSource=self; //UIView *middleview=[[UIView alloc]initWithFrame:CGRectMake(100,200,300,200)]; [buttonarray addObject:sender]; [table reloadData]; }

表格视图代码

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return viewcount; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *MyIdentifier=@"mycell"; ListCell1 *cell = (ListCell1 *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[ListCell1 alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier]; } cell.selectionStyle = UITableViewCellSelectionStyleNone; UIButton *b=[buttonarray objectAtIndex:indexPath.row]; cell.imageView.frame=CGRectMake(0, 0, 0, 0); b.imageView.frame=CGRectMake(0, 0, 30, 30); cell.imageView.image=b.imageView.image; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; ListCell1 *cell1 = (ListCell1 *)[tableView cellForRowAtIndexPath:indexPath]; [cell1 addSubview:delbutton]; delpath=indexPath; return; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 100.0; }

推荐答案

之所以会发生此问题,是因为UIKit重用了UITableView中的单元格.因此,当您将UI组件添加到该单元格时,相同的组件将在不同的行上重复使用.

This issue happens because UIKit re-uses cells in a UITableView. Therefore, when you add UI components to that cell the same ones will be re-used on different rows.

简而言之,每次单元格更新时,您都需要清除/重建UI.

In short, you need to clear/rebuild your UI everytime the cell is updated.

更多推荐

UITableviewcell内容更新反映到其他单元格

本文发布于:2023-11-10 06:35:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1574623.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元格   内容   UITableviewcell

发布评论

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

>www.elefans.com

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