选择单元格时,图像视图消失但 UILabel 消失

Posted

技术标签:

【中文标题】选择单元格时,图像视图消失但 UILabel 消失【英文标题】:UIImageView disappears but not UILabel when cell is selcted 【发布时间】:2015-12-09 11:16:41 【问题描述】:

我有一个带有 UILabel 和 UIImageView 的自定义 UITableview 单元格,但在情节提要中制作并与 IBOutlet 连接时,当单元格被选中时,图像视图的背景会更改为选择颜色?如何让 UIImageView 的背景颜色保持不变?

谢谢

【问题讨论】:

【参考方案1】:

尝试调用:

cell.selectionStyle = UITableViewCellSelectionStyleNone

cellForRowAtIndexPath.

并且(可选)覆盖:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

迅速:

override func setSelected(selected: Bool, animated: Bool)

Swift 用法示例:

override func setSelected(selected: Bool, animated: Bool) 
    if selected 
        yourView.alpha = 0.5
     else 
        yourView.alpha = 1.0
    

您还可以在 animateWithDuration 块内更改视图的 alpha:

override func setSelected(selected: Bool, animated: Bool) 
    UIView.animateWithDuration(0.3, animations: 
        if selected 
            yourView.alpha = 0.5
         else 
            yourView.alpha = 1.0
        
    )

Obj-C 示例用法:

#import "YourTableViewCell.h"

@implementation YourTableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    [super setSelected:selected animated:animated];
    //your code
    // example: yourView.backgroundColor = [UIColor greenColor];


- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated 
    [super setHighlighted:highlighted animated:YES];
    //your code
    // example: yourView.backgroundColor = [UIColor greenColor];


@end

【讨论】:

如何以及在哪里调用 setSelected? 如你所见,函数声明前有override关键字。你不必调用它。 UITableView 会为你调用它。只需将此方法放在您的 UITableViewCell 子类中即可。 我添加了示例用法。【参考方案2】:

我认为这可能是由于 tableviewcell 选择而发生的。 只需使用以下代码 sn-p

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    [tableview deselectRowAtIndexPath:indexPath animated:YES];

这可能会对您有所帮助。如果没有,请为此分享您的实施信息。

【讨论】:

【参考方案3】:

您可能已将图像视图的背景颜色设置为清除颜色。

【讨论】:

【参考方案4】:

您可以在-didSelectRowAtIndexPathUITableView 中更改您的单元格的imageView

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

          //get the cell from the selected row.
          UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 

         //change custom cell's imageView to desired backgroundColor
         selectedCell.imageView = [UIColor clearColor];

别忘了实现UITableViewDelegateUITableViewDatasource

【讨论】:

以上是关于选择单元格时,图像视图消失但 UILabel 消失的主要内容,如果未能解决你的问题,请参考以下文章

选择单元格时,如何阻止 UIView 的背景颜色消失?

滚动单元格时表格视图设置消失

点击/ reloadData不更改单元格时TableView单元格消失?

tableview 编辑模式单元格选择复选标记在滚动时消失

UITableViewCell 和消失的分隔符

ExtJS 4.1 - 编辑单元格时消失的选择(组合框编辑器)