在 UITableViewCell 的 setSelected 和 setHighlighted 方法中创建自定义附件视图会导致我的其余代码被忽略

Posted

技术标签:

【中文标题】在 UITableViewCell 的 setSelected 和 setHighlighted 方法中创建自定义附件视图会导致我的其余代码被忽略【英文标题】:Creating a custom accessoryView in the UITableViewCell's setSelected and setHighlighted methods is causing the rest of my code to be ignored 【发布时间】:2012-02-15 07:39:14 【问题描述】:

在我的 UITableViewCell 子类中,我重写了 setHighlighted 和 setSelected 方法来更改单元格被选中时的外观,但是每当我在任一方法中设置附件视图属性时,我的所有其他代码都会更改字体和阴影颜色被完全忽略。

例如,使用此代码将更改文本和详细标签的文本颜色

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    if (selected)         
        self.textLabel.textColor         = [UIColor whiteColor];
        self.textLabel.shadowColor       = [UIColor clearColor];
        self.detailTextLabel.textColor   = [UIColor whiteColor];
        self.detailTextLabel.shadowColor = [UIColor clearColor];
     

但是当我将自定义的附件视图添加到组合中时,所有其他代码都被忽略了,但是附件视图图像确实出现了。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    if (selected)         
        self.textLabel.textColor         = [UIColor whiteColor];
        self.textLabel.shadowColor       = [UIColor clearColor];
        self.detailTextLabel.textColor   = [UIColor whiteColor];
        self.detailTextLabel.shadowColor = [UIColor clearColor];

        self.accessoryView = 
            [[UIImageView alloc] initWithImage:styleImage(@"/icons/disclosure_selected.png")];
     

我做错了什么吗?如何在选定和突出显示的状态下正确自定义附件视图和单元格的其余代码?

【问题讨论】:

【参考方案1】:

我最终只是创建了自己的 UIImageView 并隐藏了内置的。

【讨论】:

【参考方案2】:

我认为附件视图是 UIButton 而不是 UIImageView... 试试这个:

accessory = [UIButton buttonWithType:UIButtonTypeCustom];
    [accessory setImage:[UIImage imageNamed:@"/icons/disclosure_selected.png"] forState:UIControlStateNormal];
    accessory.frame = CGRectMake(0, 0, 26, 26);      //You can change it
    accessory.userInteractionEnabled = YES;          //You can change it too
    self.accessoryView = accessory;

希望对你有帮助

【讨论】:

self.accessoryView 是 UIView 而不是 UIButton。您可以通过使用 UIImageView 创建自己的图像来自定义附件视图。除非您希望披露图标实际上可点击,否则使用 UIButton 是没有意义的,但这不是必需的,因为表格单元本身已经是可点击的。

以上是关于在 UITableViewCell 的 setSelected 和 setHighlighted 方法中创建自定义附件视图会导致我的其余代码被忽略的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签

在UITableViewCell中委托UICollectionView

UITableViewCell 的 UIButton 在滚动时消失

在 UITableViewCell 中调整 UITextView 的大小

iOS UITableViewCell点击时子视图背景透明的解决方法

在 UITableViewCell 中自动调整 UITextField 的大小