をUITableViewCell
クリックすると、セルをクリックすると背景部分 (背景画像がカバーしていない領域) が青色に変わります。また、セルをクリックすると、セル上のすべてのUILabel
s が白に変わります。
ただし、クリックしたときに青い背景が欲しくないのですが、そうすると、セル内の s のselectionstylenone
強調表示された色が失われます。UILabel
セルがクリックされたときに青い背景を取り除く方法はありますUILabel
か?
をUITableViewCell
クリックすると、セルをクリックすると背景部分 (背景画像がカバーしていない領域) が青色に変わります。また、セルをクリックすると、セル上のすべてのUILabel
s が白に変わります。
ただし、クリックしたときに青い背景が欲しくないのですが、そうすると、セル内の s のselectionstylenone
強調表示された色が失われます。UILabel
セルがクリックされたときに青い背景を取り除く方法はありますUILabel
か?
これは次のように行うことができます。テーブル セルの選択スタイルを に設定しますUITableViewCellSelectionStyleNone
。これにより、青い背景の強調表示が削除されます。次に、デフォルトの UITableViewCell クラスを使用する代わりに、テキスト ラベルの強調表示を希望どおりに機能させるには、 のサブクラスを作成し、強調表示された状態に応じてラベルの色を設定する独自の実装でUITableViewCell
のデフォルトの実装をオーバーライドします。 setHighlighted:animated
.
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
if (highlighted) {
self.textLabel.textColor = [UIColor whiteColor];
} else {
self.textLabel.textColor = [UIColor blackColor];
}
}
選択スタイルを none に設定した後、次のデリゲート メソッドを使用できます。
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
このように、ここにコードを実装します
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];
[cell.lbls setTextColor:[UIColor whiteColor]];
return indexPath;
}
この作業を行うには、選択スタイルをに設定するUITableViewCellSelectionStyleNone
必要があり、メソッドsetSelected:animated:
をオーバーライドして必要な結果を得る必要があります。これは、青色 (または灰色) の選択が表示されたときに iOS の自動選択メカニズムが行うのと同じことを行います。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if (selected) {
self.textLabel.textColor = [UIColor whiteColor];
} else {
self.textLabel.textColor = [UIColor blackColor];
}
}
UITableViewCell の背景を変更するなど、別の方法でこれをカスタマイズすることもできます。
cellForRowAtIndexPath では、次のコードを使用します。
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell.myLabel setHighlightedTextColor: [UIColor whiteColor]]; // for all your labels
これがうまくいくことを願っています。
コーディングをお楽しみください :)
のサブクラスで次の関数をオーバーライドしますUITableViewCell
。
override func setHighlighted(highlighted: Bool, animated: Bool) { }
override func setSelected(selected: Bool, animated: Bool) { }
私がそれを機能させる唯一の方法は次のとおりでした:
- (void)awakeFromNib {
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:(55.0/255.0) green:(163.0/255.0) blue:(237.0/255.0) alpha:1.0];
bgColorView.layer.masksToBounds = YES;
self.selectedBackgroundView = bgColorView;
}