以编程方式将表添加到导航控制器视图不起作用

Posted

技术标签:

【中文标题】以编程方式将表添加到导航控制器视图不起作用【英文标题】:Adding table to navigation controller view programatically doesnt work 【发布时间】:2017-10-18 09:07:28 【问题描述】:

当尝试添加一个表来覆盖视图控制器的整个视图时:

func setConstraints()

    self.view.addSubview(statisticsTable);

    statisticsTable.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true;
    statisticsTable.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true;
    statisticsTable.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true;
    statisticsTable.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true;

表格不显示。我是否正确假设在导航控制器的上下文中的 topAnchor 是指视图控制器视图的顶部(导航栏结束的位置?)。这看起来很简单,所以我显然在这里遗漏了一些明显的东西。谢谢。

【问题讨论】:

【参考方案1】:

每当您在代码中创建视图并尝试向该视图添加约束时,您必须记住设置 translatesAutoresizingMaskIntoConstraints

func setConstraints()

    self.view.addSubview(statisticsTable);
    // try to add this before you add your constraints to the view
    statisticsTable.translatesAutoresizingMaskIntoConstraints = false

    statisticsTable.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true;
    statisticsTable.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true;
    statisticsTable.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true;
    statisticsTable.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true;

【讨论】:

欢迎。看看它是否有效,这样你就可以检查问题是否正确,这样它也可以帮助其他人。

以上是关于以编程方式将表添加到导航控制器视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式添加多个导航控制器?

导航到上一个视图控制器,默认后退按钮不起作用

如何以编程方式将视图控制器嵌入到导航视图控制器中

视图控制器之间的导航不起作用

如何向在 tabcontroller 中以编程方式创建的导航控制器中的 barbuttonitem 添加操作

以编程方式添加的约束不起作用