4

サブクラス化されたテーブルビューセルが選択された状態になったときの外観と動作をカスタマイズするのに問題があります。

私のセルには、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.6iOS 6.1SDK。

4

2 に答える 2

2

setHighlighted:animatedの方法を使用しUITableViewCellてラベルを変更しますcolor

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Change you label text color here
    //
    // Edit Here

    if (selected) {
        // New Colors Here
    }
    else {
        // Old Colors Here
    }
}
于 2013-03-09T13:56:10.563 に答える
0

セルを選択すると、そのセルのすべてのラベル(自分で追加したものを含む)が強調表示された状態に設定されます。これは、初期化時に強調表示されたテキストの色を定義し、セルに処理させることができることを意味します。

おそらく現時点では、ラベルが強調表示に設定されており、自分で行っている色の変更が元に戻されています。

また、セルには、新しいサブビューを追加する代わりに使用する必要があるselectedBackgroundViewプロパティがあります。

于 2013-03-09T13:51:46.337 に答える