向 UITableViewController 添加顶部/底部视图?
Posted
技术标签:
【中文标题】向 UITableViewController 添加顶部/底部视图?【英文标题】:Add top/bottom views to UITableViewController? 【发布时间】:2014-03-18 15:29:01 【问题描述】:在我的故事板中,我有 UITableViewController,它有自定义类。 如何在表格视图的顶部和底部添加 UIView 对象?
我是否必须在 UIView 中创建 UITableView 和两个所需的视图,然后手动初始化我的控制器、设置 tableView 还是有更好的方法?
【问题讨论】:
您想将视图添加到第一个/最后一个部分的页眉/页脚吗?那么你可以使用UITableViewDelegate
的方法tableView:viewForHeaderInSection:
和tableView:viewForFooterInSection:
取决于您是否希望视图随视图滚动
我希望视图是静态的,而不是滚动和模糊的表格项目。
【参考方案1】:
如果您想使用 UITableViewController 来管理单元格和静态布局,最好的办法是在情节提要中使用容器视图。这将允许您围绕表格布局主视图内容,并且仍然保留一个单独的 UITableViewController 维护表格本身。设置正确的自动布局约束(真的很简单,只需将容器视图锚定到页眉和页脚视图)
【讨论】:
是的,容器视图在这种情况下真的很有用。【参考方案2】:是的,在 UITableViewConroller 中是可能的:
let bottomView = UIView()
bottomView.backgroundColor = .red // or your color
bottomView.frame = CGRect(x: 0, y: UIScreen.main.bounds.size.height - 78, width: tableView.frame.size.width, height: 78) // 78 or your size of view
navigationController?.view.addSubview(bottomView)
tableView.tableFooterView = UIView()
【讨论】:
但是如果你这样做,表格视图不会滚动到新视图后面吗?你如何让它尊重新视图的空间?【参考方案3】:这样的东西应该适合你:
// Your frame/view will vary
UIView *subview = [[UIView alloc]initWithFrame:CGRectMake(0, 64, 320, 44)];
subview.backgroundColor = [UIColor redColor];
[self.navigationController.view addSubview:subview];
【讨论】:
你说你希望它是静态的,而不是随着表格视图滚动 确切地说,它也不应该掩盖表格。我在评论中提到过。 只需更改表格视图的框架,然后从子视图的底部开始以上是关于向 UITableViewController 添加顶部/底部视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 6 中向分组样式 UITableViewController 添加背景图像?
如何从 UIViewController 传递变量来委托 UITableViewController