动态表格视图+滚动视图
问题描述:
我有一个UIScrollView
,顶部有一些信息来源,并在按钮上有一个UITableView
。表视图不能滚动,所以为了能够显示大量的单元格,我需要手动计算东西。这就是我实际做的(你可以在下面的代码中看到)。同时,表格视图的容器也应随之增长。我试图在加载视图时更改这些参数,但没有什么真正改变...动态表格视图+滚动视图
这是它的样子。在IB。
的结构。
和代码。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var tableView: UITableView!
let numberOfCells = 55
let rowHeight: CGFloat = 40
let footerHeight: CGFloat = 30
let headerHeight: CGFloat = 30
let identifier = "Cell"
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
self.tableView.delegate = self
self.tableView.backgroundColor = self.view.backgroundColor
self.tableView.scrollEnabled = false
self.automaticallyAdjustsScrollViewInsets = false
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.identifier)
let estimatedHeight = CGFloat(self.numberOfCells) * self.rowHeight + self.footerHeight + self.headerHeight
self.tableView.frame.size = CGSizeMake(self.tableView.bounds.width, estimatedHeight)
self.scrollView.contentSize = CGSizeMake(self.view.bounds.width, CGRectGetMaxY(self.tableView.frame))
self.scrollView.frame.size = CGSizeMake(self.view.bounds.width, CGRectGetMaxY(self.tableView.frame))
}
// MARK:- Table view data source
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.numberOfCells
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(self.identifier) as UITableViewCell
cell.textLabel?.text = "City"
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
return cell
}
// MARK:- Table view delegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return self.rowHeight
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return self.headerHeight
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return self.footerHeight
}
}
那么,可能是什么原因?如何制作我想要的?坦率地说,我对UIScrollView并不很熟悉,但是有一些教程构建了图像。
答
基本上,这是一个很不好的方法。只有当你有一个非常特殊的功能时才能应用它。一般来说,你可以简单地把所有内容放在UITableView
之内。只需创建一个UIView
实例,添加子视图,制作布局内容并将此视图分配为tableView.tableHeaderView
。它适合我,也希望你也能! :)
答
UITableView将自动滚动 - 但它不能,因为您已将其高度设置为所有单元格的高度。将高度设置为屏幕高度,一切都会很好。
UIScrollView是不必要的,但您在这里也完成了相同的操作 - 您已将滚动视图框架高度和内容高度设置为表格视图的高度。只设置内容高度将使滚动视图能够完成其工作。
快乐编码。
谢谢你的回复!重点是做一个不可滚动的表格视图,但提供所有的单元格的帮助下UIScrollView ... – Majotron 2014-11-02 16:54:53