如何在 UITableViewController 中混合“自定义部分标题视图”和“常规标题”?

Posted

技术标签:

【中文标题】如何在 UITableViewController 中混合“自定义部分标题视图”和“常规标题”?【英文标题】:How to mix "Custom Section Header View(s)" and "Regular Header(s)" in a UITableViewController? 【发布时间】:2010-02-03 22:10:54 【问题描述】:

想象一个包含多个部分的表格(“StyleGrouped”):

某些部分应该有一个“常规标题”。 “常规部分”之间应该有一些按钮。

直观地说,为了定义章节标题,我会使用:

(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

为了模拟按钮,我将通过以下方式创建自定义 UIView:

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

问题是当您开始使用viewForHeaderInSection 时,titleForHeaderInSection 停止工作...

这是有道理的,因为我们现在应该提供自定义标题视图。唯一的问题是没有办法访问 UIKit 用来呈现“常规标题标题”的原始 UIView...

不是世界末日(即创建自己的 UILabel 并模拟 UIKit 外观),但我只是想知道我是否错过了什么(?)

【问题讨论】:

后来发现:问题似乎不是使用“viewForHeaderInSection”时“titleForHeaderInSection”停止工作。相反,问题在于您必须通过 heightForHeaderInSection 返回“常规标题标题”的猜测高度。 HTH 【参考方案1】:

似乎 viewForHeaderInSection 在 titleForHeaderInSection 之前被调用。但是,如果您确实为不想使用视图的特定行返回 nil,则会调用 titleForHeaderInSection。

【讨论】:

感谢您的努力,但这并不能完全解决问题。无论如何,它帮助我发现解决方案是在必须显示“常规标题标题”时在 (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger) 部分返回硬编码值 31。跨度> 更正:原来的 UIKIt 高度是 36。我个人还是更喜欢 31,因为它减少了(默认超大)上边距...

以上是关于如何在 UITableViewController 中混合“自定义部分标题视图”和“常规标题”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableViewController 之上添加 UIView [关闭]

如何将 UITableViewController 创建为可重用模块?

如何将 uitoolbar 添加到 uitableviewcontroller?

如何在当前 UITableViewController 上方添加一个 UIView

Swift:如何在 UITableViewController(包含 UICollectionView)中使用“didSelectItemAtIndexPath”?

使用 UITableViewController 时如何让 pickerView 粘在底部?