本文介绍了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内容更新反映到其他单元格
发布评论