期待どおりに機能するカスタム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> この幻想的なバグに対処する方法が思い浮かびません。
ありがとう。