我是一个快速初学者,我遇到了以下问题。
我在 UIView 容器中显示 UITableView 很好。
问题是表格不会向上/向下滚动。
我已经阅读了有关稍微类似问题的线程,它指出完整的表格已正确显示,但它被 UIView 容器的大小剪切,因此在显示所有单元格时不需要滚动它.
所以我的问题是,如何将表格的高度调整到 View 容器的范围内,以便它可以滚动?
这是我的 View Controller 代码:
我在这里声明了 UIView 的导出
@IBOutlet weak var viewOrdersDrinks: UIView!
然后我在 viewDidLoad 中调用此函数,它将 UITableView 作为 subview 加载到 UIView 中。
func loadOrdersDrinks(){
let listDrinks: CompletedOrderedDrinksListTableViewController = CompletedOrderedDrinksListTableViewController (nibName: "CompletedOrderedDrinksListTableViewController", bundle: nil)
self.addChildViewController(listDrinks)
self.viewOrdersDrinks.addSubview(listDrinks.view)
}
最佳答案
首先,您必须自动布局 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
添加为 subview 之外,您还必须尊重与添加 subview Controller 相关的其他 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)
}
关于swift - UITableView 不在 UIView 容器内滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45180055/