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

折月煮酒 提交于 2019-12-06 19:51:46

问题


When I load my view controller I'm getting this error:

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

I don't know why. I think I might've added a third party framework that messed with layers, but I removed it in my troubleshooting. Any insights would be great.

EDIT

It happens during viewDidLoad of my tableViewcontroller. I have a tableView on my second vc. I've narrowed it down to it crashing on setting the heightForRowAtIndexPath on the 4th custom cell. The cell is on a static tableView................. :/ Getting closer!

Here's my heightForRowAtIndexPath:

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

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

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

Pretty generic. Any thoughts on where else this might be caused?


回答1:


I had the same error too and found this fix

It mentions to remove the accessoryView Outlet which you will see on the TableView.

To do this:

  1. Click on the Table View
  2. Go to the "Connections Inspector", it's the right window, the very last icon (looks like a circle with an arrow right)
  3. Look for the accessoryView and disconnect the outlet

In the screenshot below, see the outlet you are to disconnect:




回答2:


check if you add self.view in self.view, exemple:

self.view.addSubview(view)

or

contentView.addSubview(self.view)



回答3:


This might help someone still in trouble with this, For me the issue was this

layer.addSublayer(layer)

Adding a layer to itself 🤦‍♂️ . After this mistake I am planning to kill myself :(.




回答4:


I solved one crash of this kind by removing the outlet to File' s owner in some of xib UI files. I answer here in case someone encounters a similar thing.




回答5:


One of my friend was facing the same issue. The root cause was lying in the viewForHeaderInSection delegate of UITableview.

He was adding a label in main view of the controller in this delegate. He was supposed to create a UIView and return it in this delegate but unfortunately he was returning self.view there. So removing this code fixed the issue.




回答6:


I've managed to fix it but not in the way that I'd hoped. I ended up scratching the tableViewCell that was causing the issue and rebuilding all the layout constraints from scratch. Not ideal, but it worked. I hope someone can come along in the future and explain why this error happened! Cheers.




回答7:


I had this issue too, and found out I accidentally created an outlet from the TableViewCell backgroundView to the TableView's view - DOH!



来源:https://stackoverflow.com/questions/31553111/layer-is-a-part-of-cycle-in-its-layer-tree-ios-9-swift-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!