问题是现在,当我尝试更改背景颜色(或者如果我在xib中配置了一个),它将不断地将该消息输出到控制台:
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
这意味着我有两个问题:
>如果我不想看到这个警告,我必须摆脱xib文件中的背景颜色(这是不希望的,因为这意味着我的xib不再反映在运行时视图的外观).
>当我尝试通过代码更改背景颜色时,我得到contentView.backgroundColor的建议,但是当我尝试遵循这个建议,没有任何反应. (这是因为contentView为零)
注意:这里有一个similar question,但主要是关于静音消息,没有找到一个解决上述两个问题的替代解决方案.
更新:要清楚,我想继续使用头文件视图的xib文件,并希望能够调用dequeueReusableHeaderFooterViewWithIdentifier:,以便在管理视图时该表可以是高效的.
解决方法
>将UITableViewHeaderFooterView的背景颜色重置为默认值.
>直接在UITableViewHeaderFooterView的实例下面添加一个视图,并将其称为“内容视图”. (这正是苹果与UITableViewCell做的,我们只是模仿那个结构.)
>现在,您可以将内容视图的背景颜色更改为xib文件中所需的任何内容.
>将任何其他视图放在内容视图中.
>在扩展方法中重新定义contentView属性,并将IBOutlet添加到其定义中. (见下面的代码.)
>将属性与您创建的内容视图相关联,就像使用任何IBOutlet一样.
>您现在可以使用contentView.backgroundColor在代码中更改背景颜色,就像错误消息一样.
.h文件:
@interface ABCHeaderView : UITableViewHeaderFooterView @end
.m文件:
@interface ABCHeaderView () @property (nonatomic,readwrite,retain) IBOutlet UIView *contentView; @end @implementation ABCHeaderView @synthesize contentView; @end
这种层次结构与Apple’s documentation是一致的:
If you have custom content to display,create the subviews for your content and add them to the view in the contentView property.