ios - 使用 Swift 和 UITableView 实现表头 View 的正确方式

标签 ios swift uitableview

我是一名初级 iOS 开发人员,我正在使用 UITableView。正如标题所示,我正在寻找将给定 View 插入 UITableView 的 header 部分的正确方法。我使用了以下两种方法:

tableView.tableHeaderView = NSBundle.mainBundle().loadNibNamed("InputToListCell", owner: nil, options: nil)[0] as! UITableViewCell

let nib = UINib(nibName: "InputToListCell", bundle: nil)
tableView.registerNib(nib, forHeaderFooterViewReuseIdentifier:"InputToListCell")

override func tableView(tableView:UITableView, viewForHeaderInSection section:NSInteger) -> UIView{
    let header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("InputToListCell")
    return header!;
}

哪种方法更好?如果两者都有效,是否有更好的方法,或者这是一个偏好问题?我只是想知道为什么有两件事做同样的事情?为了灵 active ?

最佳答案

他们做不同的事情。

您的第一个 block 将添加一个 tableHeaderView 显示在整个表格上并随表格滚动的单个 View 。

第二个 block 将创建一个节标题,该节标题将显示在表格中每个节的顶部。它主要随表格滚动,但会固定到屏幕顶部,直到整个部分滚出屏幕。

因此,这完全取决于您实际尝试做什么。在没有部分的表格中(技术上只有一个部分),它们非常相似,不同之处在于第二个将固定到屏幕顶部,但第一个不会。

顺便说一句,在这两种情况下,tableHeaderView 不需要(可能不应该)派生自 UITableViewCell

关于ios - 使用 Swift 和 UITableView 实现表头 View 的正确方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34908483/

相关文章:

ios - bringSubviewToFront 将 UIView 移回原始位置

ios - 如何在 Interstitial 被解散之前释放场景?

ios - 如何从自定义 uitableviewcell 推送到新的 View Controller

iphone - PopToRootViewController 上的 UINavigationButton 和 UIButton?

ios - 如何使用核心数据遍历检索到的对象?

ios - 我们可以继承 NSOperationQueue 吗?

ios - 强制手动关闭 iOS 共享表 Swift iOS 8 和 9

swift - 保存到核心数据时 NSFetchedResultsController 不更新

iOS 11 bug - 带有搜索栏的 TableView 向上滚动后跳回

ios - 自动布局和 sizeForChildContentContainer