【发布时间】:2016-07-07 20:35:43
【问题描述】:
我正在为 UITableView 的部分设置标题,一切正常:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
let headerView = MyCustomHeaderView()
headerView.backgroundColor = UIColor.blueColor()
return headerView
}
每个部分的标题都是蓝色的,正如我所期望的那样。
现在,我想在 UITableView 滚动时更改此颜色,因此我在 UITableView 扩展中实现了此方法:
extension UITableView
{
func setHeadersColor(color: UIColor)
{
guard let delegate = self.delegate
else {return}
guard delegate.respondsToSelector(#selector(UITableViewDelegate.tableView(_:viewForHeaderInSection:)))
else {return}
for i in 0...self.numberOfSections
{
if let header = delegate.tableView!(self, viewForHeaderInSection: i) as? MyCustomHeaderView
{
header.backgroundColor = color
}
}
}
}
当我调用此方法时,header.backgroundColor = color 会被调用,但标题的背景颜色不会改变。
所以我的问题是:
tableView:viewForHeaderInSection:返回的UIView的实例是否与标题上显示的实际UIView相同?是副本吗?是别的吗?如何动态更改此标题视图?我是否必须致电
reloadData才能更改标题的背景颜色?那会浪费资源..
【问题讨论】:
-
您可以使用
tableView.headerViewForSection(x)获取表中的视图 -
我也试过了,但我得到了同样的结果
标签: ios uitableview cocoa-touch