0

テーブルビューで8つのセルを使用しています。UIButton、UILabel、UISlider などのコンポーネントのグループを持つ各セル。6番目のセルを更新すると、1番目のセルに反映されます。同様に、7番目のセルを更新すると、2番目のセルに反映されます。

携帯コードを削除:

{
 [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;
}
4

1 に答える 1

2

この問題は、UIKit が UITableView 内のセルを再利用するために発生します。したがって、そのセルに UI コンポーネントを追加すると、同じコンポーネントが別の行で再利用されます。

つまり、セルが更新されるたびに UI をクリア/再構築する必要があります。

于 2013-01-11T12:52:05.370 に答える