iOS

CollectionViewの並び替えを実装する

投稿日:

はじめに

こんにちは。Yossyです。
前回まではCollectionViewのカスタムレイアウトを作成していました。
このCollectionViewのセルの並び替え処理を実装をしたので、備忘録ついでに紹介したいと思います。

実装方法

自分が作成した時は要件の都合上、CollectionViewからセル(カスタムクラス実装)自体を取得し、セルが持つプロパティ(並び順含む)をDBに保存していました。そして、次にCollectionViewを表示する際にDBから並び順を含めたプロパティを読み出して使用するという流れです。

手順

①ロングタップの実装
②並び替え可とする実装
③並び替え時のデータ処理

ロングタップの実装

ロングタップジェスチャーを追加します。
ロングタップでセルを並び替えて、指を離すと並び替えが完了します。
移動するセルのインスタンスをプロパティに入れて保持しておきます。

並び替えを可とする

デリゲートメソッドcollectionView(_:canMoveItemAt:)trueを返します。

並び替え時のデータ処理

セルが移動された際に呼ばれるデリゲートメソッドcollectionView(_:moveItemAt:to:)を実装します。
ここで、CollectionView内のセルを取得し、配列に格納して、DBへの保存処理を行います。

次回表示時

DBからセルの取得処理を行って、order順に表示してあげます。

他に

iOS11以降であれば、UICollectionViewDragDelegateUICollectionViewDropDelegateを利用した実装方法も可能です。
機会があれば、こちらも紹介したいと思います。

さいごに

シンプルな並び替え実装は難しくないですが、色々と要件が重なると途端に難しくなりますね。色々な実装パターンを知っておいて、使い分けしたいですね。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus詳解 Swift 第5版SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

blog-page_footer_336




blog-page_footer_336




-iOS
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Xcode11のデバッグ機能

1 はじめに2 Device Conditions2.1 Thermal state condition2.2 Network link condition3 Environment Override ...

swift

SwiftでPDFを表示する(iOS11以前対応版)

1 はじめに1.1 前提条件2 実装3 さいごに はじめに こんにちは、nukkyです。 SwiftでPDFを表示したい場合iOS11以降ならPDFKitがありますが、自分の様にまだ11以前のOSにも ...

[Swift]Alamofireを使ってファイルをDLしてみる

1 はじめに1.1 前提条件2 今回やること3 準備4 実装4.1 DLしたファイルへのアクセス5 さいごに はじめに こんにちは、nukkyです。 みなさんSwiftでの通信ライブラリは何を使ってま ...

swift

端末のモデル名やサイズを簡単に取得できるライブラリ「Device」

1 はじめに2 準備3 試してみる3.1 端末モデル名3.2 画面サイズ3.3 端末の種類4 さいごに はじめに こんにちは、nukkyです。 今回は端末のサイズやモデル名などを 簡単に取得できるライ ...

swift

Swiftでシェア機能や外部アプリ起動の導線を簡単に実装できるライブラリ「SwiftShareBubbles」

1 はじめに2 準備3 実装3.1 表示3.2 用意されているパターン4 さいごに はじめに こんにちは、nukkyです。 今回はSNSでのシェア機能や外部アプリ起動の導線を追加したいときに 簡単に実 ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年11月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。