カスタムtableViewCellがあります。ハイライトしてユーザーのタッチダウンを示したい。セルの選択スタイルはUITableViewCellSelectionStyleBlue
です。親コントローラーでself.clearsSelectionOnViewWillAppear = YES
を設定しました。
私は行ってもいいはずです。いいえ。選択はまだセルに固執します。私が欲しいのは、タッチダウンの間だけの選択表示です。外観は、タッチアップするとすぐに選択されていない外観に戻るはずです。
どうすればよいですか?
乾杯、
ダグ
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
以下Swift例では、didHighlightRowAtIndexPath
を使用してタッチダウン時にセルの背景色を変更し、didUnhighlightRowAtIndexPath
を使用して色をリセットします-以下を参照してください。
// MARK: UITableViewDelegate
func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.backgroundColor = UIColor.greenColor()
}
}
func tableView(tableView: UITableView, didUnhighlightRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.backgroundColor = UIColor.blackColor()
}
}
スーパーを呼び出さずに- (void)setSelected:(BOOL)selected animate:(BOOL)animated
を上書きする
これは機能します:
セルの境界線が区切り文字のように見える背景ビューを取得します。InterfaceBuilderでデフォルトのテーブルビュー設定を変更しないでください。UITableViewCellSelectionStyleNoneがselectionstyleに設定されていないことを確認してください。作業コードを貼り付けています。 :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *kCellIdentifier = @"PlayListCell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
}
MPMediaPlaylist *playList = [playlistCollection objectAtIndex:indexPath.row];
cell.textLabel.text = playList.name;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d Songs",[playList.items count]];
MPMediaItemCollection *playListMediaCollection = [playlistCollection objectAtIndex:indexPath.row ];
cell.imageView.image =[UIImage imageWithCGImage:[self getImageForCollection:playListMediaCollection.items]];
// the main code which make it highlight
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:170.0f/255.0 green:170.0f/255.0 blue:170.0f/255.0 alpha:1.0f];
[bgColorView.layer setBorderColor:[UIColor blackColor].CGColor];
[bgColorView.layer setBorderWidth:1.0f];
[cell setSelectedBackgroundView:bgColorView];
return cell;
}