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

11dmarpk  于 2022-11-06  发布在  Swift
关注(0)|答案(9)|浏览(150)

当我加载视图控制器时,我收到以下错误:


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

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

编辑

这发生在我的tableViewcontrollerviewDidLoad期间。我在我的第二个vc上有一个tableView。我已经把它缩小到在第四个自定义单元格上设置heightForRowAtIndexPath时崩溃。该单元格在一个静态tableView上................:/越来越接近!
下面是我的heightForRowAtIndexPath

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    print("idx = \(indexPath.row)")

    return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}

很普通。有没有其他可能的原因?

bwntbbo3

bwntbbo31#

这可能会帮助一些人仍然在这方面的麻烦,对我来说,问题是这样的

layer.addSublayer(layer)

给自己加了一层🤦‍♂️。犯了这个错误后我打算自杀:(。

368yc8dk

368yc8dk2#

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

self.view.addSubview(view)

contentView.addSubview(self.view)
gwbalxhn

gwbalxhn3#

我也遇到了同样的错误,发现了这个fix
它提到要移除您将在TableView上看到的accessoryView输出口。
要执行此操作,请执行以下操作:
1.单击表视图
1.转到“连接检查器”,它是右边的窗口,最后一个图标(看起来像一个带向右箭头的圆圈)
1.查找附件查看并断开插座
在下面的屏幕截图中,查看您要断开连接的插座:

mlmc2os5

mlmc2os54#

我的一个朋友也遇到了同样的问题,根本原因在于UITableview的viewForHeaderInSection委托。
他在这个委托中的控制器的主视图中添加了一个标签。他应该创建一个UIView并在这个委托中返回它,但不幸的是他在那里返回了self.view。因此删除这个代码修复了这个问题。

6yjfywim

6yjfywim5#

我已经设法修复了它,但不是以我希望的方式。我最终删除了导致问题的tableViewCell,并从头开始重建所有布局约束。不理想,但它起作用了。我希望将来有人能沿着解释为什么会发生这个错误!干杯。

6rvt4ljy

6rvt4ljy6#

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

ukxgm1gy

ukxgm1gy7#

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

hi3rlvi2

hi3rlvi28#

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

9o685dep

9o685dep9#

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

相关问题