当作为子视图控制器嵌入到容器视图中时,为空的TableView

时间:2018-08-05 03:09:00

标签: ios swift xcode

我有一个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
}

2 个答案:

答案 0 :(得分:0)

您添加了SubjectsTableViewController.view作为子视图。这还不够。您还应该将SubjectsTableViewController添加为视图控制器的子级。否则,没有指向SubjectsTableViewController的指针指向deinit

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

答案 1 :(得分:0)

您不能简单地将视图控制器的视图从该视图控制器中剥离出来并将其推到另一个视图中。您必须执行精心规定的舞蹈,以使一个视图控制器成为另一个视图的孩子,而您没有在做该舞蹈。因此,您的SubjectsTableViewController在一行中存在,而在下一行中又不存在,因此没有视图控制器可供可怜的旧表视图使用。它不再具有任何功能。正如您所说的,它是空的。