ios - 修改子 Controller 中的约束

标签 ios swift xcode uiviewcontroller constraints

我有一个 TabBarController 连接到一个属于 class MainViewController: UIViewController 类的 View Controller

Storyboard

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/

相关文章:

ios - 点击时突出显示 uicollectionview 单元格

ios - preferredStatusBarStyle 未在 iOS 13 和其他系统中调用

ios - iOS 深层链接上的 Google 应用邀请仅打开应用商店

swift - 如何更新可观察对象中数组的元素

objective-c - 如何在 iOS swift 中处理 NSDictionary 作为返回类型?

ios - Xcode 12.3 : Building for iOS Simulator, 但链接和嵌入式框架是为 iOS + iOS 模拟器构建的

ios - 获取多维数组的键( `[String: [String: String]]`)

iOS 在同一请求中发送 POST 和 GET

objective-c - 在 UITableView 中显示建议的位置

swift - 使用 loadNibNamed 时崩溃