1. ホーム
  2. ios

iOS 10のバグ。UICollectionViewが、存在しないインデックスパスを持つセルのレイアウト属性を受信する不具合

2023-12-03 18:25:48

質問

iOS 10搭載のデバイスでアプリを実行すると、このエラーが発生します。

UICollectionView は、存在しないインデックス パスを持つセルのレイアウト属性を受け取りました。

iOS 8と9では問題なく動作します。調べてみたところ、コレクションビューのレイアウトを無効にすることに関連するものであることがわかりました。その解決策を実装しようとしましたが、成功しなかったので、私は直接助けを求めたいと思います。これは私の階層ビューです。

->Table view 
    ->Each cell of table is a custom collection view [GitHub Repo][1]
        ->Each item of collection view has another collection view

私が試したのは

    [self.collectionView.collectionViewLayout invalidateLayout];

の中で

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

の両方のコレクションビューの

また、私はデータを再読み込みする前にレイアウトを無効にしようとしましたが、うまくいきません...。

どなたか、取るべき方向を教えていただけませんか?

どのように解決するのですか?

コレクションビューのセル数を変更したときに起こりました。reloadDataを呼んだ後のinvalidateLayoutが抜けていたことがわかりました。これを追加した後は、クラッシュが発生しなくなりました。AppleはiOS10でcollectionViewsにいくつかの修正を加えている。古いバージョンで同じ問題が発生しないのはそのせいだと思います。

これが最終的なコードです。

[self.collectionView reloadData];
[self.collectionView.collectionViewLayout invalidateLayout];

//Swift 4.2 Version
collectionView.reloadData()
collectionView.collectionViewLayout.invalidateLayout()