我有一个 TabBarController
连接到一个属于 class MainViewController: UIViewController
类的 View Controller
MainViewController
具有以下约束作为属性:
@IBOutlet weak var ContainerBottomConstraint: NSLayoutConstraint!
和下面的方法来修改约束:
func resizeContainer() {
ContainerBottomConstraint.constant = Constants.playingNowBarHeight
}
我想从 TabBarController
调用 resizeContainer()
现在我正在尝试从 viewDidLoad()
调用它,如下所示
if let vc = viewControllers?[0] as? MainViewController {
vc.resizeContainer()
}
不过我越来越
fatal error :在展开可选值时意外发现 nil
在线 ContainerBottomConstraint.constant = Constants.playingNowBarHeight
最佳答案
@IBOutlet lazy var containerBottomConstraint = containerView.bottomAnchor.constraint(equalTo: someView.topAnchor)
如果您将约束声明为 View Controller 的实例属性,则需要使其成为 var
lazy
并且您必须对其进行初始化.惰性变量仅在使用时读取。
然后在 View Controller 中,激活它:
containerBottomConstraint.isActive = true
现在该约束是一个实例属性。
关于ios - 修改子 Controller 中的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372485/