我有一个屏幕,其中包含两个元素(UIView
和UITableView
)。当用户滚动屏幕时,我希望UIView
离开屏幕(顶部),并且UITableView
开始滚动。我为UIView
指定了固定高度,为UITableViewCells
'指定了固定高度。另外,我设置了底部和顶部锚点,但是如果我不给UITableView
指定特定高度,则UITableView
不会显示。如果我指定UITableView
的特定高度,则只显示部分单元格而不是全部。
此外:首先,tableView为空,因为其数据源为空。当用户点击UIView内的按钮时,数据源将完成并刷新表视图数据。
我有一些帖子,但是所有人都说给UITableView设置固定高度。我不知道如何显示固定高度的所有单元格。 例如: Dynamic height TableView in a Scroll View
锚点:
boxView.anchor(self.view.topAnchor, left: self.view.leftAnchor, bottom: nil, right: self.view.rightAnchor, topConstant: 20, leftConstant: 10, bottomConstant: 0, rightConstant: 10, widthConstant: 0, heightConstant: 240)
sTableView.anchor(self.boxView.bottomAnchor, left: self.view.leftAnchor, bottom: self.scrollView.bottomAnchor, right: self.view.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 100)
我如何声明UITableView:
let sTableView = UITableView()
var dataSource: [SupportedService]?
let scrollView = UIScrollView()
viewDidLoad(){
sTableView.delegate = self
sTableView.dataSource = self
sTableView.register(BaseCell.self, forCellReuseIdentifier:"supportedServicesCell")
sTableView.tableFooterView = UIView()
sTableView.isScrollEnabled = false
self.scrollView.addSubview(sTableView)
self.view.addSubview(scrollView)
}
@objc func buttonTapped(_ sender: UIButton){
//Do Some Network Requests Here (Data is temp)
dataSource = DATA
sTableView.reloadData()
}
TableView函数:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let data = dataSource{
return data.count
}else{
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "supportedServicesCell", for: indexPath) as! BaseCell
guard let data = dataSource else { return cell }
cell.textLabel?.text = data[indexPath.row].title
return cell
}
滚动之前我想要的方式:
滚动后:
答案 0 :(得分:1)
我已经看到一些应用程序可以做到这一点。但是他们的方法不同。如果有帮助,我将解释该方法。这是他们的工作。
tableView
的用户交互被禁用。view
具有动画效果,可以通过移出屏幕来隐藏自身,而tableView
占据整个屏幕。tableView
上再次启用了用户交互,其功能类似于普通的tableView。tableView
的顶部后仍尝试向下滚动,view
会被动画化回到该位置,并且parentView返回其原始状态。答案 1 :(得分:0)
您需要更改为此类设计设计应用程序UI的方法。对于当前的设计,将UIView和Headerview嵌入UIScrollView内是一种简单,美观且更好的方法。