2012-01-17 17 views
0

私はUITableViewCellを持っています。私はセルのtextLabelから1を加えたり引いたりすることができます。また、セルを削除することもできます。ここに私の問題がある、私はtextLabelの値に5を加えると言う。そして、このセルは0のindexPath(テーブルの最初のセル)にあります。このセルを削除しても、テーブルにセルがなくなると、新しいセルが追加され、この新しいセルは削除されたセルと同じ値を自動的に取得します。だからこの新しいセルは5の値を持ち、セルが追加されるときにはすべてのセルと同じようにセルの値を1にします。これは、セルが削除され、まったく同じindexPathで新しいセルが追加された場合にのみ発生します。だから私の質問です:私はこのセル "メモリ"またはこれを修正するための "データ"を削除する必要がありますか?おかげで助けを集めました!UITableViewCellとそのセルのデータをすべて削除します

CellForRowAtIndexPath

細胞が削除されたり、画面をオフに行くされている
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     addBtn = [[UIButton alloc]init]; 
     addBtn =[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [addBtn setFrame:CGRectMake(220,10,25,55)]; 
     [addBtn addTarget:self action:@selector(addLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [addBtn setTitle:@"+" forState:UIControlStateNormal]; 
     [addBtn setEnabled:YES]; 
     [cell addSubview:addBtn]; 

     subBtn = [[UIButton alloc]init]; 
     subBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [subBtn setFrame:CGRectMake(260,10,25,55)]; 
     [subBtn addTarget:self action:@selector(subtractLabelText:) forControlEvents:UIControlEventTouchUpInside]; 
     [subBtn setTitle:@"-" forState:UIControlStateNormal]; 
     [subBtn setEnabled:YES]; 
     [cell addSubview:subBtn]; 

     //cell.textLabel.text = @"1"; 


    } 
    //cellText.hidden=!self.editing; 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    cell.imageView.image = [imageArray objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [number objectAtIndex:indexPath.row]; 


return cell; 
} 
+0

'cellForRowAtIndexPath:'メソッドのコードを投稿できますか? 'dequeueReusableCellWithIdentifier:' – jonkroll

+0

あなたのUITableViewにいくつかのコードを投稿した後にtextLabelの値を正しく設定していないように思えますが、textLabelの値はどこから来ますか?配列?何か、また、それはおそらく、細胞が再利用されているためです。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath可能であれば –

+0

@jonkrollは今投稿します! – iProRage

答えて

2

、テーブルビューは、それらを保存し、後でそれを再利用します。だから、にtextLabelの値をリセットする必要があります。

のtableViewのテーブルビューのデリゲート:cellForRowAtIndexPath:セルを再利用する際に、常にすべてのコンテンツをリセットする必要がありUITableViewCellクラス参照が、これは言います。

+0

大丈夫、どうすればいいですか? 'cell.textLabel.text = @" 1 ";'をセットすべきか、これを行う別の方法がありますか?また 'if(cell == nil)'ステートメントの中に入れておくべきでしょうか?助けてくれてありがとう! – iProRage

+0

助けてください!私は答えを探して、私はドキュメントを見て、ありがとう! – iProRage

+1

'cell.textLabel.text'を' indexPath'に適切な値に初期化する必要があります。通常、配列やデータベーステーブル内の適切な値を検索するには、 'indexPath.row'(多分' indexPath.section')を使う必要があるということです。 –

関連する問題