如何在整个屏幕上滚动表格视图
Posted
技术标签:
【中文标题】如何在整个屏幕上滚动表格视图【英文标题】:How to scroll table view with the whole screen 【发布时间】:2019-05-21 15:59:47 【问题描述】:我想在我的视图控制器中滚动并显示整个 table view
。
像这样,我希望collection view
在滚动时向上移动,table view
的内容将显示在整个屏幕上。
但我现在得到的是表格视图在表格视图部分内滚动,而集合视图没有向上移动。
这是我的视图控制器的层次结构,我在 Scroll View
中有 Collection View
和 Table View
我检查了this post 和this post,但没有工作。
【问题讨论】:
【参考方案1】:您可以在tableView's headerView
中添加collectionView
,而不是在controller's
view
中单独添加collectionView
。
1.创建一个自定义UIView
- HeaderView
,其中将包含一个UICollectionView
class HeaderView: UIView
@IBOutlet weak var collectionView: UICollectionView!
//Add collectionView dataSource and delegate methods here
2. 将上面创建的HeaderView
添加为tableView's
headerView
在您的controller
中。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad()
super.viewDidLoad()
//Here.....
if let headerView = Bundle.main.loadNibNamed("HeaderView", owner: self, options: nil)?.first as? HeaderView
self.tableView.tableHeaderView = headerView
//add UITableViewDataSource and UITableViewDelegate methods here...
在故事板中 - 在 controller
中添加 tableView
并将其 - top, bottom, left and right constraints
固定到 controller's
view
。
输出:
【讨论】:
嗨,但是这样我不能将集合视图单元格添加到标题视图 xib 并将 segue 添加到didSelectItemAt
函数?
在单独的 xib 中创建 collectionViewCell
,而不是使用 segue
,您可以以编程方式导航。
对不起,我没有说清楚。我想点击不同的collectionViewCell
并推送到不同的ViewController
。但是我不能在xib文件中使用self.navigationController?.pushViewController(desVC, animated: true)
。【参考方案2】:
您可以尝试将集合视图放在一个单元格中,并将该单元格作为表格视图中的第一行。
【讨论】:
以上是关于如何在整个屏幕上滚动表格视图的主要内容,如果未能解决你的问题,请参考以下文章
使用 UITableView 在 UITableView 上自动滚动 UIImageView
如何在不像 Whatsapp 那样遮挡整个屏幕的情况下禁用表格视图?