Objective c 获取节的标题视图高度

Objective c 获取节的标题视图高度,objective-c,uitableview,ios7,Objective C,Uitableview,Ios7,我已经实现了 - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 委托方法,并在其中实现这段代码 UITableViewHeaderFooterView *header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:@"paymentFormHead

我已经实现了

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
委托方法,并在其中实现这段代码

UITableViewHeaderFooterView *header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:@"paymentFormHeader"];
header = (UITableViewHeaderFooterView *)view;
然后,我尝试使用并从标题中分配一个
ui视图

UIView *header = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:@"paymentFormHeader"];

并得到一个空值作为返回。这是我第一次使用这个方法,所以我可能没有正确地理解它,我注意到它没有要求使用
indepath
。在此方面的任何帮助都将不胜感激。谢谢

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

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

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

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

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

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

谢谢!那是为了我。
[myTableView registerClass:[UITableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"paymentFormHeader"];