0

期待どおりに機能するカスタムUITableViewCellがあります。1 つの (重要な) 詳細を除いて。

私のセル( Nib からロードされた)には、UIButton( custom に設定された)が含まれています。そのボタンはチェックボックスのように機能します。ほとんどの場合、カスタム画像を使用してチェックボックスが選択されています (= チェックされています):

[self.checkboxButton setImage:[UIImage imageNamed:@"check_off"] forState:UIControlStateNormal];
[self.checkboxButton setImage:[UIImage imageNamed:@"check_on"] forState:UIControlStateSelected];

問題は次のとおりです。
行を選択すると、チェックボックス(ボタン)が自動的に選択解除されます。これがどこから来ているのかを確認するためにコード全体を調べ、チェックボックスの選択されたプロパティをカスタムtableviewcellコード以外のどこにも設定しませんでした。

興味深いのは
、すべて を設定tableviewcell.selectionstyleするUITableViewCellSelectionStyleNoneと、期待どおりに機能することです(カスタムの背景色を除く)。チェックボックスに切り替えるとUITableViewCellSelectionStyleGray、自動的に選択が解除されます。

更新
チェックボックス を上書きするとsetSelected:animated:、チェックされたままになります。

- (void) setSelected:(BOOL)selected animated:(BOOL)animated
{
    // checkbox stays checked as expected
    NSLog(@"set select with anim");
    // when calling super setSelected:animated: checkbox gets unchecked
    // [super setSelected:selected animated:animated];
}

私が見逃しているメカニズムはありますか?
たとえばsetSelected:、 、drawRect、 … を上書きする必要がありますか?<br> この幻想的なバグに対処する方法が思い浮かびません。

ありがとう。

4

1 に答える 1

0

メソッドのチェックボックスをオフにしているようですtableView:didSelectRowAtIndexPath:

于 2012-09-12T09:16:34.597 に答える