I'm 从 xib 文件创建 UITableViewHeaderFooterView https://stackoverflow.com/a/20073742/35690,几乎一切都工作正常。
问题是,现在当我尝试更改背景颜色(或者如果我在 xib 中配置了背景颜色)时,它会不断地将以下消息输出到控制台:
在 UITableViewHeaderFooterView 上设置背景颜色已被弃用。请改用 contentView.backgroundColor。
这意味着我有两个问题:
- 如果我不想看到该警告,我必须去掉 xib 文件中的背景颜色。(这是不可取的,因为这意味着我的 xib 不再反映视图在运行时的样子)。
- 当我尝试通过代码更改背景颜色时,我得到了
contentView.backgroundColor
建议,但是当我尝试遵循该建议时,什么也没有发生。 (这是因为contentView
is nil
.)
Note:有一个类似的问题 https://stackoverflow.com/questions/18800743/uitableviewheaderfooterview-cant-change-custom-background-when-loading-from-nib在这里,但这主要涉及静音消息,而不是找到解决上述两个问题的替代解决方案。
Update:需要明确的是,我想继续使用 xib 文件作为标题视图,并且希望能够调用出队ReusableHeaderFooterViewWithIdentifier: https://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/dequeueReusableHeaderFooterViewWithIdentifier:以便表可以有效地管理视图。
这是我发现解决此问题的最佳方法:
- 重置你的背景颜色
UITableViewHeaderFooterView
to Default.
- 直接在您的实例下方添加一个视图
UITableViewHeaderFooterView
,并称之为内容视图。 (这正是苹果所做的UITableViewCell
,我们只是模仿这个结构。)
- 您现在可以将内容视图的背景颜色更改为您在 xib 文件中想要的任何颜色。
- 放置任何其他视图
inside
the Content View
.
- 重新定义
contentView
扩展方法中的属性,并添加IBOutlet
到它的定义。 (参见下面的代码。)
- 将该属性与您创建的内容视图关联起来,就像与任何 IBOutlet 关联一样。
- 您现在可以使用更改背景颜色
contentView.backgroundColor
在代码中,就像错误消息告诉您的那样。
.h file:
@interface ABCHeaderView : UITableViewHeaderFooterView
@end
.m file:
@interface ABCHeaderView ()
@property (nonatomic, readwrite, retain) IBOutlet UIView *contentView;
@end
@implementation ABCHeaderView
@synthesize contentView;
@end
该层次结构符合苹果的文档 https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewHeaderFooterView_class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewHeaderFooterView/backgroundView:
如果您要显示自定义内容,请为您的内容创建子视图并将它们添加到 contentView 属性中的视图中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)