首页 > 解决方案 > 在滚动视图中看不到表格视图

问题描述

我正在尝试将表格视图添加到我的滚动视图中:

class ViewController: UIViewController {
    
    let tableView = UITableView()

    override func viewDidLoad() {
        super.viewDidLoad()

        let scrollView = UIScrollView()
        scrollView.backgroundColor = .red

        
        view.addSubview(scrollView)
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            scrollView.topAnchor.constraint(equalTo: view.topAnchor),
            scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
        
        scrollView.addSubview(tableView)
        
        tableView.backgroundColor = .yellow
        tableView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            tableView.topAnchor.constraint(equalTo: scrollView.topAnchor),
            tableView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
            tableView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
            tableView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor)
        ])
        
        scrollView.contentSize = CGSize(width: view.bounds.width, height: 2000)
    }


}

然而它没有显示。它只显示滚动视图背景颜色。我在这里做错了什么?

标签: iosswiftuiscrollview

解决方案


问题是 NSLayoutConstraint 中 tableView 的约束。

tableView.topAnchor.constraint(equalTo: scrollView.topAnchor),
tableView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
tableView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor)

您使用 view.bottomAnchor 或任何其他代替 scrollView,例如:

tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor)

这将显示您的 tableView。现在您可以尝试解决将 tableView 放入 scrollView 引起的其他问题。


推荐阅读