【问题标题】:Add UIView Above All Section in UITableView Swift在 UITableView Swift 中添加 UIView 高于所有部分
【发布时间】:2018-07-12 20:42:55
【问题描述】:

我不是在谈论我想在每个部分的上面放一个 uiview 的部分

这是布局

这里的 Menu 和 LeftOver 是 uiView Staters 和 new 是部分

【问题讨论】:

  • 什么样的观点?是线吗?如果你想把它放在每个部分,那你为什么不让它成为部分视图的一部分呢?
  • 其菜单标签和部分顶部的加号按钮
  • 检查布局图片
  • 将菜单和加号按钮设为单元格并下拉作为节页脚
  • 您有两个选择 1) 添加 uitableviewheader 2) 先添加 UIView 并将表格视图添加到您的 UIViewController。

标签: ios swift uitableview uiview


【解决方案1】:

您正在寻找的是节标题。您可以通过实现UITableViewDataSource 方法轻松配置自己的自定义视图

例如:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()
    // configure view, note the method gives you the section to help this process
    return headerView
}  

你可能还想实现这个功能

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 50 // or whatever it is
}

请记住,默认情况下标题是粘性的

过去,我很容易解决这个问题:

    let dummyViewHeight = CGFloat(49) // height of header (set in storyboard)
    self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: dummyViewHeight))
    self.tableView.contentInset = UIEdgeInsets(top: -dummyViewHeight, left: 0, bottom: 0, right: 0)

这基本上只是让表格标题“粘”在表格顶部的这个插图上。 (除非您真的希望它悬停在顶部的部分上)

编辑:

鉴于 OP 认为这“不令人满意”,当我说唯一的其他合理选择(如果您不想使用部分页眉或页脚视图)时,我有 99% 的信心然后制作一个新的UITableViewCell 子类。然后新的子类将出现在每个部分的顶部。

因此,在cellForIndexPath: 方法中,您将检查是否indexPath.row == 0,如果是,则将具有不同标识符的单元格出列。这样,标题就变成了一个构建方式不同的单元格。

如果您以编程方式执行此操作,请务必注册该单元格 (tableView.register(MyNewHeaderCellSubclass.self, forCellReuseIdentifier: "MyNewHeaderCellSubclass")),或者转到情节提要上的表格视图并切换两种类型的动态单元格类的选项。

但是,节标题正是这个用例的用途。如果不完全放弃UITableView,我想不出任何其他解决方案,我认为这将是一个大错误。如果是这样的话,祝你好运。

【讨论】:

  • 但这将成为我想要在部分顶部查看的部分
  • 同时检查布局图像
  • 是的,这会创建一个位于部分顶部的特殊视图。在这种方法中,您将创建具有加号按钮和线条或其他任何内容的视图,然后单元格将在之前正常填充。如果您在此函数中返回 nil,则不会添加标题。
  • 如果您只想测试看看它会去哪里,请复制并粘贴我的实现,只需将headerView.backgroundColor = .red 添加到我的代码中,您就会以红色看到该视图的去向
  • 回复了您不满意的评论,可能是您唯一的其他选择。
猜你喜欢
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2016-02-04
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多