Слой является частью цикла в его слое дерева iOS 9 Swift 2

Когда я загружаю свой контроллер представления, я получаю эту ошибку:

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

Я не знаю почему. Я думаю, что, возможно, я добавил стороннюю структуру, которая сослалась на слои, но я удалил ее в процессе устранения неполадок. Любые идеи были бы замечательными.

ИЗМЕНИТЬ

Это происходит во время viewDidLoad моего tableViewcontroller. У меня есть tableView на моем втором vc. Я сузил его до сбоя при установке heightForRowAtIndexPath на 4-й пользовательской ячейке. Ячейка находится на статическом tableView.................:/Подходим ближе!

Здесь мой heightForRowAtIndexPath:

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

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

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

Довольно общий. Любые мысли о том, где еще это может быть вызвано?

Ответ 1

У меня тоже была та же ошибка, и я нашел это исправление

В нем упоминается, что нужно удалить розетку accessoryView, которую вы увидите в TableView.

Для этого:

  1. Нажмите на представление таблицы
  2. Перейдите в "Инспектор соединений", в правом окне, самый последний значок (выглядит как круг со стрелкой вправо)
  3. Ищите аксессуарПросмотрите и отсоедините розетку

На приведенном ниже снимке экрана показана розетка, которую необходимо отключить:

enter image description here

Ответ 2

проверьте, добавили ли вы self.view в self.view, например:

self.view.addSubview(view)

или

contentView.addSubview(self.view)

Ответ 3

Это может помочь кому-то все еще в беде, Для меня проблема была в этом

layer.addSublayer(layer)

Добавление слоя к себе 🤦‍♂️. После этой ошибки я планирую покончить с собой :(.

Ответ 4

Я решил один краш такого рода, удалив выход на File' s owner в некоторых файлах xib UI. Я отвечаю здесь, если кто-то встречает подобное.

Ответ 5

Один из моих друзей столкнулся с той же проблемой. Основная причина лежала в viewForHeaderInSection делегате UITableview.

Он добавил метку в главном окне контроллера в этом делегате. Он должен был создать UIView и вернуть его в этом делегате, но, к сожалению, он возвращал себя. там. Таким образом, удаление этого кода решило проблему.

Ответ 6

Мне удалось исправить это, но не так, как я надеялся. Я закончил тем, что поцарапал tableViewCell, что вызывало проблему и перестраивало все ограничения компоновки с нуля. Не идеально, но это сработало. Я надеюсь, что кто-то может прийти в будущем и объяснить, почему эта ошибка произошла! Приветствия.

Ответ 7

У меня тоже была эта проблема, и я обнаружил, что случайно создал выход из backgroundView TableViewCell в представление TableView - DOH!