我有一个 UITableView,其中有部分标题,可以点击以展开或折叠该部分。在我的特定示例中,每个部分只有一行,可见(部分展开)或隐藏(部分折叠)。作为部分标题,我使用自定义 UITableViewHeaderFooterView - HeaderAccountView。我在 Interface Builder 创建了 *.xib 文件,并将其自定义类设置为我的 HeaderAccountView (仍在 IB 字段中)。
init
在我的 HeaderAccountView.h 和 HeaderAccountView.m 文件中,方法或类似的东西没有任何更改 - 只有一些功能可以突出显示自我(选定部分)等。
在我的主 ViewController .m 文件中
- (void)viewDidLoad
{
[super viewDidLoad];
.........
.........
UITableView *tableView = (id)[self.view viewWithTag:1];
UINib *nib= [UINib nibWithNibName:@"HeaderAccountView" bundle:nil];
[tableView registerNib:nib forHeaderFooterViewReuseIdentifier:@"HeaderCell"];
}
进而
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
HeaderAccountView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HeaderCell"];
if (headerView==nil)
{ headerView = [[HeaderAccountView alloc]
initWithReuseIdentifier:@"HeaderCell"];
}
return headerView;
}
当我运行项目时,一切正常 - 部分加载了所需的数据,当部分收到点击时 - 它突出显示(如标准单元格)。
但是,当我将表格视图滚动到底部时,例如从选定的突出显示部分,并且这个突出显示的部分已经在视图中不可见 - 刚刚从底部出现的那个部分 - 已经突出显示!
我知道这是因为它创建了我的 HeaderAccountView 的新实例,其属性BOOL selected
设置为 YES。
但我是objective-c(和编码)的新手,不明白如何纠正这个问题。
我尝试prepareForReuse
像这样使用我的自定义 UITableViewHeaderFooterView 的方法
HeaderAccountView.m:
-(void) prepareForReuse
{
self.selectedBackground.alpha = 0;
}
它工作得更好 - 但现在我有另一个问题 - 当我回到我的第一个(真正)选择和突出显示的部分时 - 它显然没有突出显示。
感谢您的帮助,如果是基本问题,我们深表歉意。