{"id":89,"date":"2021-02-09T14:45:22","date_gmt":"2021-02-09T14:45:22","guid":{"rendered":"https:\/\/yakazoo.net\/wordpress\/?p=89"},"modified":"2021-04-16T11:03:21","modified_gmt":"2021-04-16T11:03:21","slug":"uicollectionview%e3%81%a7%e8%89%af%e3%81%84%e6%84%9f%e3%81%98%e3%81%ae%e4%b8%a6%e3%81%b3%e6%9b%bf%e3%81%88%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/yakazoo.net\/wordpress\/index.php\/2021\/02\/09\/89\/","title":{"rendered":"UICollectionView\u3067\u826f\u3044\u611f\u3058\u306e\u4e26\u3073\u66ff\u3048\u65b9\u6cd5"},"content":{"rendered":"\n<p>UICollectionView\u3067\u4e26\u3073\u9806\u306e\u5165\u308c\u66ff\u3048\u3092\u3057\u305f\u3044\u5834\u5408\u3001Drag and Drop\u306e\u51e6\u7406\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u7c21\u5358\u306b\u826f\u3044\u611f\u3058\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\uff08iOS11\u4ee5\u4e0a\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u521d\u671f\u8a2d\u5b9a<\/h2>\n\n\n\n<p>ViewDidLoad\u5185\u306a\u3069\u3067\u3001Drag and Drop\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u521d\u671f\u8a2d\u5b9a\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>collectionView\u306edragDelegate\u3068dropDelegate\u3092\u8ffd\u52a0\u3057\u3001dragInteractionEnabled\u3092true\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code swift\"><code>collectionView.dropDelegate = self\ncollectionView.dragDelegate = self\ncollectionView.dragInteractionEnabled<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">UICollectionViewDragDelegate<\/h2>\n\n\n\n<p>UICollectionViewDragDelegate\u306eitemsForBeginning\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code swift\"><code>extension ViewController: UICollectionViewDragDelegate {\n    func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -&gt; &#91;UIDragItem] {\n        let itemIdentifier = indexPath.item.description\n        let itemProvider = NSItemProvider(object: itemIdentifier as NSItemProviderWriting)\n        let dragItem = UIDragItem(itemProvider: itemProvider)\n        return &#91;dragItem]\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">UICollectionViewDropDelegate<\/h2>\n\n\n\n<p>UICollectionViewDropDelegate\u306edropSessionDidUpdate\u3001performDropWith\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code swift\"><code>extension MemoViewController: UICollectionViewDropDelegate {\n    func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -&gt; UICollectionViewDropProposal {\n        return UICollectionViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath)\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code swift\"><code>func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) {\n    if coordinator.proposal.operation == .move {\n            guard let item = coordinator.items.first,\n                  let destinationIndexPath = coordinator.destinationIndexPath,\n                  let sourceIndexPath = item.sourceIndexPath else {\n                return\n            }\n\n            collectionView.performBatchUpdates({\n                \/\/ \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u66f4\u65b0\n                let n = dataList.remove(at: sourceIndexPath.item)\n                dataList.insert(n, at: destinationIndexPath.item)\n                \/\/\u30bb\u30eb\u306e\u79fb\u52d5\n                collectionView.deleteItems(at: &#91;sourceIndexPath])\n                collectionView.insertItems(at: &#91;destinationIndexPath])\n            })\n            coordinator.drop(item.dragItem, toItemAt: destinationIndexPath)\n    }\n}<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/views_and_controls\/collection_views\/supporting_drag_and_drop_in_collection_views\" target=\"_blank\" rel=\"noreferrer noopener\">Apple \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>UICollectionView\u3067\u4e26\u3073\u9806\u306e\u5165\u308c\u66ff\u3048&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/yakazoo.net\/wordpress\/index.php\/2021\/02\/09\/89\/\">Continue reading<span class=\"screen-reader-text\">UICollectionView\u3067\u826f\u3044\u611f\u3058\u306e\u4e26\u3073\u66ff\u3048\u65b9\u6cd5<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":85,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,11,10],"tags":[],"class_list":["post-89","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-swift","category-11","category-10","entry"],"_links":{"self":[{"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/89","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=89"}],"version-history":[{"count":5,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":200,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/89\/revisions\/200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/media\/85"}],"wp:attachment":[{"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yakazoo.net\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}