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


関連記事

swift

[Swift]Schemaを使用してURLの接続先を切り替える

1 はじめに2 XCodeのBuildConfigurationとは3 スキーマとは4 スキーマの追加方法5 スキーマの設定変更6 開発と本番で異なる通信の接続先を設定する7 さいごに はじめに はじ ...

【iOS14】App Groups を使用して WidgetKit にデータ共有

1 はじめに2 App Groupsの準備2.1 App Groupsの許可2.2 App Groupsの使い方3 WidgetKitにデータ共有4 さいごに5 おすすめ書籍 はじめに 今回はアプリ側 ...

swift

Swift3でSCLAlertViewを使ってみた

1 はじめに2 準備3 実装 はじめに 今回はSwiftでフラットなデザインの アニメーション付きアラートビューが扱える SCLAlertViewを試してみたいと思います。 準備 おなじみCocoaP ...

swift

Swift3 StoryBoard上でUIButtonやUILabel、UIViewのcornerを変更する

1 はじめに1.1 前提条件2 StoryBoardの準備3 カスタムクラスの作成3.1 class ~について3.2 @IBDesignableを記述すると3.2.1 Live Renderingと ...

swift

SwiftでLTMorphingLabelを使ってみた

1 はじめに2 LTMorphingLabelとは3 準備4 実装 はじめに 今回はLTMorphingLabelというライブラリが面白そうなので使ってみました。 LTMorphingLabelとは ...

フォロー

blog-page_side_responsive

2019年11月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

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