首页 > 解决方案 > 将 TableView 作为子视图控制器嵌入到容器视图中时为空

问题描述

我有一个 TableViewController 作为容器视图的子视图控制器。出于某种原因,表格视图控制器不显示它的任何行。它显示其背景颜色,但没有信息。这是自然的吗?这是代码:

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(topBar)
    topBar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    topBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    topBar.heightAnchor.constraint(equalToConstant: 80).isActive = true
    topBar.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

    view.addSubview(containerView)
    containerView.topAnchor.constraint(equalTo: topBar.bottomAnchor).isActive = true
    containerView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    containerView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    containerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

    topBar.addSubview(subjects)
    subjects.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    subjects.topAnchor.constraint(equalTo: view.topAnchor, constant: 30).isActive = true

    topBar.addSubview(backButton)

    backButton.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
    backButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 30).isActive = true

    let subjectsView = SubjectsTableViewController().view!

    subjectsView.translatesAutoresizingMaskIntoConstraints = false

    containerView.addSubview(subjectsView)

    subjectsView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
    subjectsView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    subjectsView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
    subjectsView.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
}

标签: iosswiftxcode

解决方案


您添加SubjectsTableViewController.view为子视图。这还不够。您还应该添加SubjectsTableViewController视图控制器的子项。否则,没有指向SubjectsTableViewController导致它的指针deinit

let child = SubjectsTableViewController()
addChildViewController(child)
stackView.addArrangedSubview(child.view)
child.didMove(toParentViewController: self)

推荐阅读