layer is a part of cycle in its layer tree iOS 9 S

2019-04-21 01:57发布

问题:

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

Can't post the screenshot, because I don't have enough reputation. The blog post shows you how to do it though.



回答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