如何在通过故事板实现的自定义Section Header中更新属性?

时间:2014-11-23 16:43:57

标签: ios objective-c uitableview sectionheader

我有一个使用故事板实现的自定义节头视图类。在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似乎没有路径(没有显示错误),我可以看到每次更新表视图并且视图中有一个新单元但该节标题中的标签不是时,该方法被称为正常更新。

我是以正确的方式来做这件事的吗?或者我可能需要刷新节标题以使更新可见?

2 个答案:

答案 0 :(得分:0)

我认为,最好将它用于:

- (void)scrollViewDidScroll:(UIScrollView)scrollView
{

}

并且,您应该检查,您在哪个队列/线程中调用标签更新,它应该只从主线程调用

答案 1 :(得分:0)

经过大量调查和实验后,我得出结论,无法更新通过故事板添加的自定义节标题的属性。虽然我很乐意让任何人发布证据。

作为解决方案/解决方法我实现的是在表视图viewForHeaderInSection中以编程方式创建UIViews。这些UIViews(和它们的子视图)可以毫无问题地更新 - 只要需要(例如,建议使用scrollViewDidScroll作为mityaika07) - 并且无需重新加载表或其他复杂情况。

I've added a test case to help illustrate the issue