我为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
会被调用,但标题的背景颜色不会改变。
所以我的问题是:
是UIView
返回的tableView:viewForHeaderInSection:
的实例与标题上显示的实际UIView
相同吗?是副本吗?这是别的吗?
如何动态更改此标题视图?我是否必须拨打reloadData
才能更改标题的背景颜色?这将浪费资源..
答案 0 :(得分:0)
我认为您的问题与不重复使用视图有关,因此您的视图会不断创建
let headerView = MyCustomHeaderView()
并返回,始终使用蓝色背景颜色
我希望这有助于你