uitableview - 在UiTableViewCell中,选择时透明,视图

  显示原文与译文双语对照的内容
0 0

我有一个自定义 UITableViewCell,带有红色的UIView,当我选择UITableViewCell时,它变成透明的。 是否有方法使UIView的颜色保持选中状态?

仅关于该视图的配置。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *kCellIdentifier = @"Cell Identifier";
 DetailsCell *cell = (DetailsCell *) [tableView dequeueReusableCellWithIdentifier: kCellIdentifier];
 if (cell == nil)
 {
 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DetailsCell" owner:self options:nil];
 cell = [nib objectAtIndex:0];
 }
 cell.myView.layer.cornerRadius = 5;
 cell.myView.layer.masksToBounds = YES;
 return cell;

}

时间:原作者:6个回答

0 0

将标签添加到视图。

yourview.tag = 3;

和在你的tableview方法 didSelectRowAtIndexPath 中添加这里代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//get the cell which is selected
 UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
//set tempView color of selected cell bcoz when cell selected all view color is gone
 UIView *tempView=[selectedCell viewWithTag:3];
//set your color whatever you want
 tempView.backgroundColor = [UIColor colorWithRed:(112/255.0) green:(136/255.0) blue:(213/255.0) alpha:1];
}

更新

你也可以使用选择你的单元格选择颜色来执行这里操作。 将这里代码放入 cellForRowAtIndexPath

cell.selectionStyle = UITableViewCellSelectionStyleNone;
原作者:
0 0

你可以设置自定义背景视图,使用你想要的颜色。 你所做的工作将根据配置单元的方式而有所不同。

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor =//Your color (cell.backgroundColor perhaps);
cell.selectedBackgroundView = bgColorView;
原作者:
0 0

如果你想显示选择( 蓝色的颜色),但将视图保留为给定的颜色,可以以将selectionStyle设置为:,然后在代码中执行。

在 RDCell.m 中:

@implementation RDCell

- (id)initWithCoder:(NSCoder *)aDecoder
{
 self = [super initWithCoder:aDecoder];
 if (self) {
 self.backgroundView = [[UIView alloc] init];
 self.backgroundView.backgroundColor = [UIColor clearColor];
 }
 return self;
}

在表视图控制器中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 RDCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
 cell.label1.text = self.theData[indexPath.row];
 if ([self.selectedPath isEqual:indexPath]) {
 cell.backgroundView.backgroundColor = [UIColor blueColor];
 }else{
 cell.backgroundView.backgroundColor = [UIColor clearColor];
 }
 return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
 self.selectedPath = indexPath;
 [self.tableView reloadData];
}
原作者:
0 0

你还可以使用UITableViewCell的setHighlighted方法来撤消默认行为所做的任何更改。

原作者:
...