web-dev-qa-db-ja.com

レイヤーは、そのレイヤーツリーのサイクルの一部ですiOS 9 Swift 2

ビューコントローラをロードすると、次のエラーが発生します。

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

理由はわかりません。レイヤーを台無しにしたサードパーティのフレームワークを追加したかもしれないと思いますが、トラブルシューティングで削除しました。どんな洞察も素晴らしいでしょう。

編集

それは私のviewDidLoadtableViewcontrollerの間に起こります。 2番目の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)
}

かなり一般的です。これが他にどこで引き起こされる可能性があるかについての考えはありますか?

11
Brie

私も同じエラーがあり、これを見つけました fix

TableViewに表示されるaccessoryViewOutletを削除することに言及しています。

これをする:

  1. テーブルビューをクリックします
  2. 「接続インスペクター」に移動します。これは右側のウィンドウで、最後のアイコンです(右矢印の付いた円のように見えます)
  3. アクセサリビューを探し、コンセントを外します

以下のスクリーンショットで、切断するコンセントを確認してください。

enter image description here

14
exo_duz

self.viewにself.viewを追加するかどうかを確認します。例:

self.view.addSubview(view)

または

contentView.addSubview(self.view)
25
Pablo Ruan

これはまだこれで困っている誰かを助けるかもしれません、私にとって問題はこれでした

layer.addSublayer(layer)

それ自体にレイヤーを追加する???? ‍♂️。この間違いの後、私は自分自身を殺すつもりです:(。

21
infiniteLoop

私の友人の一人が同じ問題に直面していました。根本的な原因は、UITableviewのviewForHeaderInSectionデリゲートにありました。

彼は、このデリゲートのコントローラーのメインビューにラベルを追加していました。彼はUIViewを作成してこのデリゲートに返すことになっていたが、残念ながらそこでself.viewを返していた。したがって、このコードを削除すると問題が修正されました。

3
Amrit Sidhu

いくつかのxibUIファイルのFile' s ownerへのアウトレットを削除することで、この種のクラッシュを1つ解決しました。誰かが同じようなことに遭遇した場合に備えて、ここで答えます。

1
xgdgsc

私にもこの問題があり、TableViewCellのbackgroundViewからTableViewのビューへのアウトレットを誤って作成したことがわかりました-DOH!

0
jensk

私はなんとかそれを修正することができましたが、私が望んでいた方法ではありませんでした。問題の原因となっているtableViewCellをスクラッチし、すべてのレイアウト制約を最初から再構築することになりました。理想的ではありませんが、うまくいきました。誰かが将来一緒に来て、このエラーが発生した理由を説明できることを願っています!乾杯。

0
Brie