我有一个使用情节提要实现的自定义节标题视图类。当视图在 viewForHeaderInSection 方法中加载视图时,我可以根据需要设置各种标签和视图。
static NSString *CellIdentifier = @"HeaderCell";
HourlyCustomTableSectionHeader* headerCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSString *sectionHeaderTitle = [[NSString alloc] init];
if(section==0){
sectionHeaderTitle = @"TODAY";
headerCell.CustomHeaderTitle.text = sectionHeaderTitle;
}
但是,我想从每次查看新单元格时运行的另一种方法更新其中一些。
基本上 - 我想设置部分标题的背景颜色以匹配最上面的单元格,并在用户滚动时更新。
我在尝试引用要更新的属性时遇到问题。为了简单起见,我正在尝试先更新自定义文本标签。
HourlyCustomTableSectionHeader* customSectionHeadObj = [[HourlyCustomTableSectionHeader alloc] init];
customSectionHeadObj.CustomHeaderTitle.text = @"new title";
Xcode 似乎对路径很好(没有显示错误),我可以看到每次更新表视图并且视图中有新单元格但节标题中的标签没有更新时,该方法都被调用了。
我这样做的方式是否正确?或者,也许我需要刷新部分标题以使更新可见?
:
- (void)scrollViewDidScroll:(UIScrollView)scrollView
{
}
并且,您应该检查,您在哪个队列/线程中调用标签更新,它应该仅从主线程调用
经过大量调查和实验,我得出结论,无法更新通过故事板添加的自定义节标题的属性。虽然我很乐意让任何人以其他方式发布证据。
作为解决方案/解决方法,我实现的方法是以编程方式在表视图视图中创建标头作为UIViews。这些UIViews(及其子视图)可以毫无问题地更新 - 在需要时(例如mityaika07建议的scrollViewDidScroll) - 并且不需要重新加载表或其他复杂性。
我添加了一个测试用例来帮助说明问题