0

2 つの異なるカスタム クラスからテーブル ビューに 2 つのタイプのセルをロードするアプリケーションがあります。ボタンの画像を変更します。 as button.selected=YES;ike that.しかし、私の問題は、セルを繰り返しスクロールしているときです。 .しかし、私の場合、いくつかのセルボタンも変更されています.これが私が物事を追加する方法です.

- (UITableVieCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier1 = @"CellIdentifier";
    static NSString *CellIdentifier2 = @"Cell";
    if (indexPath.section == 0 && indexPath.row==0)
    { 
         CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];

        if (cell == nil)
        {
            cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier1] autorelease];
            cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"dhjkhs.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];


        }
         cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.datelabel.text=@"skhfkhdf";
      cell.nameLabel.text=@"dsdbjsbjf";
    cell.msg.text=@"dshjshhshd";
 [cell.lbutton addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside];     
  cell.myImageView.image=[UIImage imageNamed:@"sdsd.png"];
  cell.llabel.text=@"sdjkjskljdls";   
        cell.llabel.tag=indexPath.section+1;

        return cell;

    }
    else 
    {


        Customcellwithimage *cell = (Customcellwithimage *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

        if (cell == nil)
        {
            cell = [[[Customcellwithimage alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier2] autorelease];
             cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"sdsdsd.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];
        }
         cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.datelabel1.text=@"sdsdsdsd";
        cell.nameLabel1.text=@"sdsdsdsdsd";
        cell.msg1.text=@"sdsasfkdakfhk ";

         [cell.likebutton1 addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside]; 
        cell.myImageView1.image=[UIImage imageNamed:@"jpg1.png"];
         cell.cellview1.image=[UIImage imageNamed:@"adsdsd.png"];

        cell.llabel1.text=@"sdsdsdsdl";
        cell.llabel1.tag=indexPath.section+2;
       cell.bannerview1.image=[UIImage imageNamed:@"dsdsd.png"];

        return cell;







    }



    return Nil;

}

i have 10 sections each returning 1 row.My problem is i need to change the image of the button when clicked.I was adding that button in the customcellwith image class as

[lbutton1 setImage:[UIImage imageNamed:@"sdsd.png"] forState:UIControlStateNormal];
[lbutton1 setImage:[UIImage imageNamed:@"sdsdsd.png"] forState:UIControlStateSelected];
lbutton1.selected=NO;`

そして私のコードでは、`を追加しました

UIButton *button = (UIButton *)sender;
      button.selected=YES;

`しかし、ここでの問題は、別のセクションのボタンも変更していることです。誰か助けてくれませんか?

4

2 に答える 2

0

のチェック条件に問題がある可能性がありますif (indexPath.section == 0 && indexPath.row==0)。このチェックはNO、最初のセクションでない場合は常に行われます。CustomCellしたがって、最初のセクションの最初の行を除いて、セルはクラスで再利用されません。

于 2012-11-20T15:51:03.773 に答える
0

問題を完全に理解しているかどうかはわかりませんが、背景の作成もifの背後に移動したいと思います。変更されたらリセットする必要がありますが、現在はリセットされません(選択スタイルをリセットするのと同じように、背景をリセットする必要があります)

if (cell == nil)
{
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier1] autorelease];
}

cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"dhjkhs.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];

cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.datelabel.text=@"skhfkhdf";
cell.nameLabel.text=@"dsdbjsbjf";
cell.msg.text=@"dshjshhshd";
[cell.lbutton addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside];     
cell.myImageView.image=[UIImage imageNamed:@"sdsd.png"];
cell.llabel.text=@"sdjkjskljdls";   
cell.llabel.tag=indexPath.section+1;

return cell;
于 2012-11-20T15:28:19.783 に答える