サブクラス化されたテーブルビューセルが選択された状態になったときの外観と動作をカスタマイズするのに問題があります。
私のセルには、initWithStyle:
メソッドのコンテンツビューに追加した3つのラベルがあります。
cell1Label = [[UILabel alloc] initWithFrame:
CGRectMake(75.0f, 12.0f, 67.0f, 12.0f)];
cell1Label.backgroundColor = [UIColor clearColor];
cell1Label.textColor = [UIColor blackColor];
cell1Label.shadowColor = [UIColor whiteColor];
blah, blah, blah...
[self.contentView addSubview:cell1Label];
setSelected:(BOOL)selected animated:(BOOL)animated
次に、サブクラス内のメソッドの背景の上に黒いオーバーレイを配置します。
UIView *backgroundView = [[UIView alloc] initWithFrame:
CGRectMake(0.0f, 0.0f, 150.0f, 70.0f)];
backgroundView.backgroundColor = [UIColor colorWithRed:
0.0 green:0.0 blue:0.0 alpha:0.4];
self.selectedBackgroundView = backgroundView;
問題はここから始まります。UILabel
セルが選択されたときに読みやすくしたいので、セルとを変更する必要がtextColor
ありshadowColor
ます。しかし、私はこれを行うのに良い場所を見つけることができないようです。
コードを入れてsetSelected:(BOOL)selected animated:(BOOL)animated
も何も起こりません。に変更を加えることしかできないようですselectedBackgroundView
。
didSelectRowAtIndexPath:
また、didDeselectRowAtIndexPath:
TableViewデリゲートメソッドをそのまま使用してみました。
CustomDataCell* selectedCell = (CustomDataCell*)[tableView
cellForRowAtIndexPath:indexPath];
selectedCell.cell1Label.shadowColor = [UIColor lightGrayColor];
selectedCell.cell1Label.textColor = [UIColor blackColor];
ただし、この方法では、セルが表示領域を離れるときにいくつかの問題があります。つまり、セルを選択すると、そのセルは表示領域を離れ、別のセルを選択しても、そのテキストプロパティは通常の状態に戻りません。黒い背景は本来は消えますが、選択した状態に割り当てられた新しい状態textColor
と私は残ります。shadowColor
サブクラス化された(そしておそらく他の)状態を処理するための最良で最も信頼できる方法は何UITableViewCells
ですか?
私は使用していARC
ます; 決して使用しないでくださいIB
; onXcode 4.6
とiOS 6.1
SDK。