图层是其图层树中循环的一部分 iOS 9 Swift 2

layer is a part of cycle in its layer tree iOS 9 Swift 2

当我加载视图控制器时出现此错误:

*** Terminating app due to uncaught exception 'CALayerInvalid', reason: 'layer <CALayer: 0x7fda42c66e30> is a part of cycle in its layer tree'

我不知道为什么。我想我可能添加了一个混淆了层的第三方框架,但我在故障排除中删除了它。任何见解都会很棒。

编辑

它发生在我 tableViewcontrollerviewDidLoad 期间。我的第二个 vc 上有一个 tableView。我已将其缩小到在第 4 个自定义单元格上设置 heightForRowAtIndexPath 时崩溃。单元格处于静态 tableView................. :/ 越来越近了!

这是我的 heightForRowAtIndexPath:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    
    print("idx = \(indexPath.row)")
    
    return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}

很普通。关于这可能在其他地方引起的任何想法?

我已经设法修复它,但不是我希望的那样。我最终刮掉了导致问题的 tableViewCell 并从头开始重建所有布局约束。不理想,但它奏效了。我希望将来有人能来解释为什么会发生这个错误!干杯。

我也有同样的错误,发现了这个fix

它提到删除您将在 TableView 上看到的 accessoryView Outlet。

为此:

  1. 单击 Table 查看
  2. 转到"Connections Inspector",它是右边的window,最后一个图标(看起来像一个带向右箭头的圆圈)
  3. 寻找 accessoryView 并断开插座

在下面的屏幕截图中,查看您要断开连接的插座:

我通过删除某些 xib UI 文件中 File' s owner 的出口解决了此类崩溃。我在这里回答,以防有人遇到类似的事情。

检查是否在self.view中添加了self.view,例如:

self.view.addSubview(view)

contentView.addSubview(self.view)

我也有这个问题,发现我不小心创建了一个从 TableViewCell backgroundView 到 TableView 视图的出口 - DOH!

这可能会帮助仍然有此问题的人, 对我来说问题是

layer.addSublayer(layer)

给自己加一层 ‍♂️ .在这个错误之后我打算自杀 :(.

我的一个朋友遇到了同样的问题。根本原因在于 UITableview 的 viewForHeaderInSection 委托。

他正在该委托中的控制器的主视图中添加一个标签。他应该在这个委托中创建一个 UIView 和 return 但不幸的是 他正在 returning self.view 那里。所以删除这段代码解决了这个问题。

此外,当将视图保存为 UIViewController 中的变量时,不要将其命名为“view”,因为“view”已保存到 UIViewController 的 View

对我来说问题是
我创建了一个单元格,创建了它的 class 并在一段时间后创建了一些 IBOutlet 我意识到我的项目已经为这个单元格创建了 class。所以,我删除了我的 class 并将现有的 class 分配给了我的单元格,但忘了打破旧 class 的 IBOutlet 所以,解决方案是:
只需转到 Connection Inspector 并删除所有损坏的 IBOutlet