-1

私は現在、特定の背景UITableViewを持つボタンを含む各セルで作業しています。UIImageボタンがセルでクリックされたときにこの画像を変更したいと思います。

このコードは完全に機能していますが、ボタンをクリックすると、いくつかのボタンが変更されます.5つのボタンごとに、理由がわかりません. コードは次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    [myCell.favorite addTarget:self action:@selector(pressed_fav:) forControlEvents:UIControlEventTouchUpInside];

    return myCell;
}

- (void)pressed_fav:(id)sender
{
    UIButton *myButton = sender;

    [myButton setBackgroundImage:[UIImage imageNamed:@"star.png"] forState:UIControlStateNormal];
}

myCellIBOutletを指す「お気に入り」を含む、カスタマイズされたセルのインスタンスですUIButton

4

2 に答える 2

1

その理由UITableViewは、細胞を再利用するからです。ボタンの画像を識別するには、cellForRowAtIndexPathメソッドにロジックが必要です。

于 2012-12-13T15:53:02.963 に答える
0

どうもありがとうございました!

実際、行を削除すると:

myCell = [tableView dequeueReusableCellWithIdentifier:@"cinemaCell"];

セルは表示されません (適切に割り当てられ、代わりに初期化されています)。

于 2012-12-13T16:58:42.713 に答える