添加约束会使应用程序崩溃

Posted

技术标签:

【中文标题】添加约束会使应用程序崩溃【英文标题】:Adding constraints crashes app 【发布时间】:2017-09-01 14:06:57 【问题描述】:

我有一个自定义 UIView,我将它加载到我的 ViewController 上。

 func loadBottomSheet()

        bottomSheet = Bundle.main.loadNibNamed("BottomSheetTest", owner: self, options: nil)![0] as! BottomSheetTest
        bottomSheet?.setUp(parentController: self)
        bottomSheet?.tag = 9009164
        self.view.addSubview(bottomSheet!)
    

自定义视图的代码如下:

 func setUp(parentController: UIViewController)

        self.parentController = parentController;

        self.translatesAutoresizingMaskIntoConstraints = false

        self.leftAnchor.constraint(equalTo: parentController.view.leftAnchor).isActive = true
        self.rightAnchor.constraint(equalTo: parentController.view.rightAnchor).isActive = true
        self.heightAnchor.constraint(equalToConstant: CGFloat(400)).isActive = true
        self.bottomAnchor.constraint(equalTo: parentController.view.bottomAnchor).isActive = true


    

我正在尝试将它添加到我的视图控制器中。以下代码使应用程序崩溃并出现一般错误:libc++abi.dylib: terminating with uncaught exception of type NSException。

此时我已经从自定义视图中删除了所有内容。你在这里看到的就是它的全部,没有更多的 UI 元素,没有 IBOutlets,就是这样。我无计可施。

【问题讨论】:

【参考方案1】:

您正在为不在视图层次结构中的视图添加约束,因此您首先需要将所需视图添加为子视图,然后您可以设置约束而不会在过程中崩溃

你需要移动这条线

self.view.addSubview(bottomSheet!)

在此之上

bottomSheet?.setUp(parentController: self)

【讨论】:

以上是关于添加约束会使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

添加约束使应用程序崩溃

取消选择 SwiftUI 列表中的项目会使应用程序崩溃

添加 Y 约束时应用程序崩溃

编辑模式下的 UITableView - 按 Delete 会使我的应用程序崩溃

即使在删除之后,Core Data 命令也会使 ViewController 崩溃

使用 HttpResponseCache 会使应用程序崩溃