UITableView不在UIView容器中滚动

时间:2017-07-19 02:42:39

标签: swift uitableview

我是一个快速的初学者,我遇到了以下问题。

我正在UIView容器中显示UITableView就好了。

问题是表不会向上/向下滚动。

我已经阅读了一个稍微类似的问题的线程,它指向正确显示的整个表,但它被UIView容器的大小剪切,因此不需要滚动,因为所有单元格都被显示

所以我的问题是,如何将表格的高度调整到View容器的范围内,以便它可以滚动?

enter image description here

这是我的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)

}

1 个答案:

答案 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)
}