为啥我不能更改表格页脚的文本颜色?

Posted

技术标签:

【中文标题】为啥我不能更改表格页脚的文本颜色?【英文标题】:Why can't I change my table footer's text color?为什么我不能更改表格页脚的文本颜色? 【发布时间】:2015-08-20 15:32:19 【问题描述】:

当用户在UITableView 的文本字段单元格中提供不正确的输入时,我想将页脚更改为带有彩色文本的警告,描述错误。除了着色之外,我已经让它完美地工作了。 我在下面的代码中做错了什么,导致文本没有着色?

- (UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

    switch (section)
    
        // Inspection confirms this case is entered when needed.
        case SECTION_VALIDATABLE_FORM:
        
            UITableViewHeaderFooterView *warningFooter = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:K_FOOTER_WARNING];
            UIColor *color = [MyColors uiColorForKey:K_COLOR_TEXT_ERROR]; // inspection confirms this is the UIColor equivalent of #BB2222
            [warningFooter.textLabel setTextColor:color];
            return warningFooter;
        
        // other sections...
    
    return nil;

【问题讨论】:

【参考方案1】:

UITableViewHeaderFooterView 使用自定义的 UILabel 子类,显然颜色无法更改。

你应该继承 UITableViewHeaderFooterView 并手动添加你自己的标签。

@interface XXTableViewHeaderFooterView : UITableViewHeaderFooterView
@property (nonatomic, strong) UILabel *myLabel;
@end


@implementation XXTableViewHeaderFooterView

- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier;

    self = [super initWithReuseIdentifier:reuseIdentifier];
    if (self) 
        _myLabel = [[UILabel alloc] initWithFrame:...];
        _myLabel.textColor = ...;
        [self.contentView addSubview:_myLabel];
    
    return self;


@end

【讨论】:

我可以使用类别来完成这个吗? 很遗憾,您不能添加具有类别的属性。 对不起,我很困惑......你没有提到@propertys,我可以不只创建一个覆盖getter的类别吗?另外,我必须覆盖什么属性? label? 正如我所说的 UITableViewHeaderFooterView 使用 UILabel 的私有子类,类别将不起作用。只需创建一个子类,我添加了样板代码。 那么你现在需要在 tableView:viewForFooterInSection: 中使用 myLabel 而不是 textLabel

以上是关于为啥我不能更改表格页脚的文本颜色?的主要内容,如果未能解决你的问题,请参考以下文章

更改 TableView 标题文本颜色

为啥我不能在 CSS 中更改文本的颜色? [复制]

在 asp.net 母版页中更改页脚颜色

s-s-rS 页脚文本颜色不变

为啥我无法更改 UIButton 文本颜色?

以编程方式设置 UIButton 文本颜色 [重复]