UICollectionViewからセルを削除しようとしています。私はカスタムレイアウトを使用しています。削除は、コレクションビューに追加した長い押しジェスチャ認識機能に応答して行われます。私が読んだところでは、まずデータソースを更新してから、セルを削除する必要があります。これは私が行うことです。すべてがスムーズにself.collectionView?.deleteItemsAtIndexPaths([indexPath])
まで続きます。UICollectionViewセルの削除
***キャッチされていない例外 'NSInternalInconsistencyException'が原因でアプリを終了する理由: 'UICollectionViewは、存在しないインデックスパスを持つセルのレイアウト属性を受け取りました:{length = 2、path = 0 - 0} '
私は他の同様の質問を読んだことがありますが、それを働かせるようには見えません。
let book = self.booksForCurrentAuthor[indexPath.row]
self.booksForCurrentAuthor.removeAtIndex(indexPath.row)
self.collectionView?.deleteItemsAtIndexPaths([indexPath])
//Delete book from database
編集
私はこれが関連しているとは思わないが、私のカスタムレイアウトオブジェクトに、私はprepareLayout()
メソッド内からUICollectionViewLayoutAttributes
のキャッシュを作成します。キャッシュは、ヘッダー、セル、フッター、およびデコレーションビューの属性用に別々の配列を持つディクショナリです。
UICollectionViewを使用する場合は、 'indexPath.item'を使用してください。 –
変更を加えました - 多少の標準コレクションビューレイアウトを使用すると機能的に違いはありますか? – cweber105
なしどちらもパス内の2番目のインデックスの便利なアクセサです。 –