选择单元格时,UIImageView会消失,但UILabel不会消失

时间:2015-12-09 11:16:42

标签: ios objective-c iphone uitableview uiimageview

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

由于

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以在-didSelectRowAtIndexPath UITableView

中更改单元格的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

答案 2 :(得分:0)

我认为由于tableviewcell选择可能会发生这种情况。 只需使用以下代码段

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

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

答案 3 :(得分:0)

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