我是一个快速的初学者,我遇到了以下问题。
我正在UIView容器中显示UITableView就好了。
问题是表不会向上/向下滚动。
我已经阅读了一个稍微类似的问题的线程,它指向正确显示的整个表,但它被UIView容器的大小剪切,因此不需要滚动,因为所有单元格都被显示
所以我的问题是,如何将表格的高度调整到View容器的范围内,以便它可以滚动?
这是我的View Controller代码:
我在这里宣布了UIView的出路
@IBOutlet weak var viewOrdersDrinks: UIView!
然后我在viewDidLoad中调用此函数,该函数将UITableView作为子视图加载到UIView中。
func loadOrdersDrinks(){
let listDrinks: CompletedOrderedDrinksListTableViewController = CompletedOrderedDrinksListTableViewController (nibName: "CompletedOrderedDrinksListTableViewController", bundle: nil)
self.addChildViewController(listDrinks)
self.viewOrdersDrinks.addSubview(listDrinks.view)
}
答案 0 :(得分:0)
首先,你必须自动布局tableView以填充父级,这里是一个UIView扩展:
extension UIView {
func anchorToSuperview() {
guard let superview = self.superview else { return }
self.translatesAutoresizingMaskIntoConstraints = false
self.topAnchor.constraint(equalTo: superview.topAnchor).isActive = true
self.bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true
self.leadingAnchor.constraint(equalTo: superview.leadingAnchor).isActive = true
self.trailingAnchor.constraint(equalTo: superview.trailingAnchor).isActive = true
}
}
另外需要提及的是,除了将tableViewController
作为子项添加之外,还必须考虑与添加子视图控制器相关的其他API调用。以下是对documentation。
总而言之,为了正确添加tableView,最终的代码应如下所示:
func loadOrdersDrinks() {
let listDrinks: CompletedOrderedDrinksListTableViewController = CompletedOrderedDrinksListTableViewController (nibName: "CompletedOrderedDrinksListTableViewController", bundle: nil)
self.addChildViewController(listDrinks)
self.viewOrdersDrinks.addSubview(listDrinks.tableView)
self.listDrinks.tableView.anchorToSuperview()
self.listDrinks.didMove(toParentViewController: self)
}