获取节的标题视图高度

时间:2014-06-27 16:20:51

标签: objective-c uitableview ios7

我已经实施了

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section

委托方法,并在其中实现这段代码

UITableViewHeaderFooterView *header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:@"paymentFormHeader"];
header = (UITableViewHeaderFooterView *)view;

然后我尝试使用

从标题中指定UIView
UIView *header = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:@"paymentFormHeader"];

并获得一个null值作为回报。这是我第一次使用这种方法,所以我可能没有正确理解它,我注意到它没有要求indexPath。任何有关这方面的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

这里有一些问题。首先,您没有使用正确的方法来设置标头。您正在使用的方法(..willDisplayHeaderView..)可以让您知道您已经设置的标题何时即将显示,以便您可以在该点之后进行任何其他设置或跟踪。

您需要实现两种方法才能实现此功能:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

您的下一个问题是如何尝试将视图出列。您需要检查不存在的出列视图并使用该重用标识符手动初始化,或者只是提前注册相应的类。我建议提前注册。因此,要在viewDidLoad中或在UITableView初始化之后的某个时刻修复此问题,请按以下方式注册该类:

[myTableView registerClass:[UITableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"paymentFormHeader"];

这将确保您在尝试将其重新出现时始终为该重用标识符获取该类型的有效初始化视图。