From 4570d808c4ab0c482ebc42ba32bdfe4b4c2103fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=AB=E1=84=89=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=89=E1=85=AE?= Date: Tue, 16 Jul 2024 12:39:31 +0900 Subject: [PATCH 1/4] =?UTF-8?q?iOS=2014=20UICollectionViewListCell=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++++- .../TestCollectionViewListCell.swift | 31 +++++++++++++++ .../TestCollectionViewListCell.xib | 38 +++++++++++++++++++ .../ViewController.swift | 23 +++++++++++ .../CollectionViewAdapter.swift | 7 ++++ .../UICollectionViewAdapterCellProtocol.swift | 13 +++++++ .../UICollectionViewAdapterData.swift | 10 +++++ 7 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift create mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib diff --git a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj index 3c263f1..3a5b1e1 100644 --- a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj +++ b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */; }; 20AE47F428AB85F900EFBC9A /* CollectionViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */; }; 20AE47F628AB86EA00EFBC9A /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 20AE47F528AB86EA00EFBC9A /* README.md */; }; + 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */; }; + 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */; }; 5219671E22DD564000ABC0EF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671D22DD564000ABC0EF /* AppDelegate.swift */; }; 5219672022DD564000ABC0EF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671F22DD564000ABC0EF /* ViewController.swift */; }; 5219672322DD564000ABC0EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5219672122DD564000ABC0EF /* Main.storyboard */; }; @@ -34,6 +36,8 @@ 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewAdapter.swift; sourceTree = ""; }; 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewExtension.swift; sourceTree = ""; }; 20AE47F528AB86EA00EFBC9A /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCollectionViewListCell.swift; sourceTree = ""; }; + 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestCollectionViewListCell.xib; sourceTree = ""; }; 5219671A22DD564000ABC0EF /* CollectionViewAdapter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionViewAdapter.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5219671D22DD564000ABC0EF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 5219671F22DD564000ABC0EF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -111,6 +115,8 @@ 5219674122DD684900ABC0EF /* TestFooterCollectionReusableView.xib */, 5219673822DD5F6900ABC0EF /* TestCollectionViewCell.swift */, 5219673922DD5F6900ABC0EF /* TestCollectionViewCell.xib */, + 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */, + 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */, 5219672122DD564000ABC0EF /* Main.storyboard */, 5219672422DD564100ABC0EF /* Assets.xcassets */, 5219672622DD564100ABC0EF /* LaunchScreen.storyboard */, @@ -185,6 +191,7 @@ files = ( 5219674322DD684900ABC0EF /* TestFooterCollectionReusableView.xib in Resources */, 5219672822DD564100ABC0EF /* LaunchScreen.storyboard in Resources */, + 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */, 5219672522DD564100ABC0EF /* Assets.xcassets in Resources */, 20AE47F628AB86EA00EFBC9A /* README.md in Resources */, 5219673B22DD5F6900ABC0EF /* TestCollectionViewCell.xib in Resources */, @@ -201,6 +208,7 @@ buildActionMask = 2147483647; files = ( 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */, + 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */, 5219673E22DD60BF00ABC0EF /* TestCollectionReusableView.swift in Sources */, 205850DE2A8DF0E40085A8B0 /* UICollectionViewAdapterCellProtocol.swift in Sources */, 5219673A22DD5F6900ABC0EF /* TestCollectionViewCell.swift in Sources */, @@ -356,7 +364,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 7CMNW8US5Y; + DEVELOPMENT_TEAM = VZLG6PJDY3; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -374,7 +382,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 7CMNW8US5Y; + DEVELOPMENT_TEAM = VZLG6PJDY3; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift new file mode 100644 index 0000000..2e95292 --- /dev/null +++ b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift @@ -0,0 +1,31 @@ +// +// TestCollectionViewListCell.swift +// CollectionViewAdapter +// +// Created by SunSoo Jeon on 7/15/24. +// + +import UIKit + +@available(iOS 14.0, *) +class TestCollectionViewListCell: UICollectionViewListCell, +UICollectionViewAdapterListCellProtocol { + static var SpanSize: Int = 1 + + var actionClosure: ActionClosure? + @IBOutlet weak var label: UILabel! + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func configure(data: Any?, subData: Any?, collectionView: UICollectionView, indexPath: IndexPath, actionClosure: ActionClosure?) { + guard let data = data as? String else { return } + label.text = data + } + + static func getSize(data: Any?, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { + print("getSize: \(indexPath)") + return CGSize(width: width, height: 50) + } +} diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib new file mode 100644 index 0000000..0a5dfad --- /dev/null +++ b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example-iOS/CollectionViewAdapter/ViewController.swift b/Example-iOS/CollectionViewAdapter/ViewController.swift index 6f0c7c4..bf6701e 100644 --- a/Example-iOS/CollectionViewAdapter/ViewController.swift +++ b/Example-iOS/CollectionViewAdapter/ViewController.swift @@ -41,6 +41,29 @@ class ViewController: UIViewController { } sectionInfo.cells.append( cellInfo ) } + if #available(iOS 14, *) { + let listCellInfo = UICollectionViewAdapterData.ListCellInfo(contentObj: "cell (\(i) : \(sectionInfo.cells.count))", + accessories: [ + .delete(displayed: .always, + options: .init(isHidden: false, + reservedLayoutWidth: .standard, + tintColor: .white, + backgroundColor: .red), + actionHandler: { [weak self] in + guard let self else { return } + print("delete button tapped") + self.collectoinView.performBatchUpdates { + sectionInfo.cells.remove(at: sectionInfo.cells.count - 1) + self.collectoinView.deleteItems(at: [IndexPath(row: sectionInfo.cells.count, section: i)]) + } + })], + cellType: TestCollectionViewListCell.self) { [weak self] (name, object) in + guard let self else { return } + guard let object = object else { return } + self.alert(title: "", message: "\(object) : \(name)") + } + sectionInfo.cells.append( listCellInfo ) + } self.collectoinView.adapterData = testData self.collectoinView.isUsedCacheSize = true diff --git a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift index b0cc546..81f1c8f 100644 --- a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift +++ b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift @@ -354,6 +354,13 @@ public class UICollectionViewAdapter: NSObject, UICollectionViewDelegate, UIColl cell.configure(data: cellInfo.contentObj, subData: cellInfo.subData, collectionView: collectionView, indexPath: indexPath, actionClosure: cellInfo.actionClosure) } + if #available(iOS 14, *) { + if let cell = cell as? UICollectionViewAdapterListCellProtocol, + let listCellInfo = self.getCellInfo(indexPath) as? UICollectionViewAdapterData.ListCellInfo { + cell.setAccessories(listCellInfo.accessories) + } + } + return cell } diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift index 9ad7ca5..f53c517 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift @@ -41,6 +41,19 @@ public protocol UICollectionViewAdapterCellProtocol: UICollectionReusableView { func didUnhighlight(collectionView: UICollectionView, indexPath: IndexPath) } +@available(iOS 14, *) +public protocol UICollectionViewAdapterListCellProtocol: UICollectionViewAdapterCellProtocol { + func setAccessories(_ accessories: [UICellAccessory]?) +} + +@available(iOS 14, *) +public extension UICollectionViewAdapterListCellProtocol where Self: UICollectionViewListCell { + func setAccessories(_ accessories: [UICellAccessory]?) { + guard let accessories else { return } + self.accessories = accessories + } +} + public extension UICollectionViewAdapterCellProtocol { static func getSize(_ data: Any? = nil, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { return self.fromXibSize() diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift index 3bc79a5..d5f0791 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift @@ -34,6 +34,16 @@ public class UICollectionViewAdapterData { } } + @available(iOS 14, *) + public class ListCellInfo: CellInfo { + public var accessories: [UICellAccessory]? + + public init(kind: CellKind = .cell, contentObj: Any?, subData: [String: Any?]? = nil, accessories: [UICellAccessory]? = nil, sizeClosure: (() -> CGSize)? = nil, cellType: UICollectionViewListCell.Type, actionClosure: ActionClosure? = nil) { + super.init(kind: kind, contentObj: contentObj, subData: subData, sizeClosure: sizeClosure, cellType: cellType, actionClosure: actionClosure) + self.accessories = accessories + } + } + public class SectionInfo { public var header: CellInfo? { didSet { From 9ac5e1b3dd3c49f2ea1688ab5eb698b0f638f356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=AB=E1=84=89=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=89=E1=85=AE?= Date: Tue, 16 Jul 2024 12:41:54 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Revert=20"iOS=2014=20UICollectionViewListCe?= =?UTF-8?q?ll=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 4570d808c4ab0c482ebc42ba32bdfe4b4c2103fe. --- .../project.pbxproj | 12 +----- .../TestCollectionViewListCell.swift | 31 --------------- .../TestCollectionViewListCell.xib | 38 ------------------- .../ViewController.swift | 23 ----------- .../CollectionViewAdapter.swift | 7 ---- .../UICollectionViewAdapterCellProtocol.swift | 13 ------- .../UICollectionViewAdapterData.swift | 10 ----- 7 files changed, 2 insertions(+), 132 deletions(-) delete mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift delete mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib diff --git a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj index 3a5b1e1..3c263f1 100644 --- a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj +++ b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj @@ -14,8 +14,6 @@ 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */; }; 20AE47F428AB85F900EFBC9A /* CollectionViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */; }; 20AE47F628AB86EA00EFBC9A /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 20AE47F528AB86EA00EFBC9A /* README.md */; }; - 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */; }; - 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */; }; 5219671E22DD564000ABC0EF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671D22DD564000ABC0EF /* AppDelegate.swift */; }; 5219672022DD564000ABC0EF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671F22DD564000ABC0EF /* ViewController.swift */; }; 5219672322DD564000ABC0EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5219672122DD564000ABC0EF /* Main.storyboard */; }; @@ -36,8 +34,6 @@ 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewAdapter.swift; sourceTree = ""; }; 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewExtension.swift; sourceTree = ""; }; 20AE47F528AB86EA00EFBC9A /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCollectionViewListCell.swift; sourceTree = ""; }; - 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestCollectionViewListCell.xib; sourceTree = ""; }; 5219671A22DD564000ABC0EF /* CollectionViewAdapter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionViewAdapter.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5219671D22DD564000ABC0EF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 5219671F22DD564000ABC0EF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -115,8 +111,6 @@ 5219674122DD684900ABC0EF /* TestFooterCollectionReusableView.xib */, 5219673822DD5F6900ABC0EF /* TestCollectionViewCell.swift */, 5219673922DD5F6900ABC0EF /* TestCollectionViewCell.xib */, - 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */, - 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */, 5219672122DD564000ABC0EF /* Main.storyboard */, 5219672422DD564100ABC0EF /* Assets.xcassets */, 5219672622DD564100ABC0EF /* LaunchScreen.storyboard */, @@ -191,7 +185,6 @@ files = ( 5219674322DD684900ABC0EF /* TestFooterCollectionReusableView.xib in Resources */, 5219672822DD564100ABC0EF /* LaunchScreen.storyboard in Resources */, - 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */, 5219672522DD564100ABC0EF /* Assets.xcassets in Resources */, 20AE47F628AB86EA00EFBC9A /* README.md in Resources */, 5219673B22DD5F6900ABC0EF /* TestCollectionViewCell.xib in Resources */, @@ -208,7 +201,6 @@ buildActionMask = 2147483647; files = ( 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */, - 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */, 5219673E22DD60BF00ABC0EF /* TestCollectionReusableView.swift in Sources */, 205850DE2A8DF0E40085A8B0 /* UICollectionViewAdapterCellProtocol.swift in Sources */, 5219673A22DD5F6900ABC0EF /* TestCollectionViewCell.swift in Sources */, @@ -364,7 +356,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = VZLG6PJDY3; + DEVELOPMENT_TEAM = 7CMNW8US5Y; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -382,7 +374,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = VZLG6PJDY3; + DEVELOPMENT_TEAM = 7CMNW8US5Y; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift deleted file mode 100644 index 2e95292..0000000 --- a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// TestCollectionViewListCell.swift -// CollectionViewAdapter -// -// Created by SunSoo Jeon on 7/15/24. -// - -import UIKit - -@available(iOS 14.0, *) -class TestCollectionViewListCell: UICollectionViewListCell, -UICollectionViewAdapterListCellProtocol { - static var SpanSize: Int = 1 - - var actionClosure: ActionClosure? - @IBOutlet weak var label: UILabel! - override func awakeFromNib() { - super.awakeFromNib() - // Initialization code - } - - func configure(data: Any?, subData: Any?, collectionView: UICollectionView, indexPath: IndexPath, actionClosure: ActionClosure?) { - guard let data = data as? String else { return } - label.text = data - } - - static func getSize(data: Any?, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { - print("getSize: \(indexPath)") - return CGSize(width: width, height: 50) - } -} diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib deleted file mode 100644 index 0a5dfad..0000000 --- a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example-iOS/CollectionViewAdapter/ViewController.swift b/Example-iOS/CollectionViewAdapter/ViewController.swift index bf6701e..6f0c7c4 100644 --- a/Example-iOS/CollectionViewAdapter/ViewController.swift +++ b/Example-iOS/CollectionViewAdapter/ViewController.swift @@ -41,29 +41,6 @@ class ViewController: UIViewController { } sectionInfo.cells.append( cellInfo ) } - if #available(iOS 14, *) { - let listCellInfo = UICollectionViewAdapterData.ListCellInfo(contentObj: "cell (\(i) : \(sectionInfo.cells.count))", - accessories: [ - .delete(displayed: .always, - options: .init(isHidden: false, - reservedLayoutWidth: .standard, - tintColor: .white, - backgroundColor: .red), - actionHandler: { [weak self] in - guard let self else { return } - print("delete button tapped") - self.collectoinView.performBatchUpdates { - sectionInfo.cells.remove(at: sectionInfo.cells.count - 1) - self.collectoinView.deleteItems(at: [IndexPath(row: sectionInfo.cells.count, section: i)]) - } - })], - cellType: TestCollectionViewListCell.self) { [weak self] (name, object) in - guard let self else { return } - guard let object = object else { return } - self.alert(title: "", message: "\(object) : \(name)") - } - sectionInfo.cells.append( listCellInfo ) - } self.collectoinView.adapterData = testData self.collectoinView.isUsedCacheSize = true diff --git a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift index 81f1c8f..b0cc546 100644 --- a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift +++ b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift @@ -354,13 +354,6 @@ public class UICollectionViewAdapter: NSObject, UICollectionViewDelegate, UIColl cell.configure(data: cellInfo.contentObj, subData: cellInfo.subData, collectionView: collectionView, indexPath: indexPath, actionClosure: cellInfo.actionClosure) } - if #available(iOS 14, *) { - if let cell = cell as? UICollectionViewAdapterListCellProtocol, - let listCellInfo = self.getCellInfo(indexPath) as? UICollectionViewAdapterData.ListCellInfo { - cell.setAccessories(listCellInfo.accessories) - } - } - return cell } diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift index f53c517..9ad7ca5 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift @@ -41,19 +41,6 @@ public protocol UICollectionViewAdapterCellProtocol: UICollectionReusableView { func didUnhighlight(collectionView: UICollectionView, indexPath: IndexPath) } -@available(iOS 14, *) -public protocol UICollectionViewAdapterListCellProtocol: UICollectionViewAdapterCellProtocol { - func setAccessories(_ accessories: [UICellAccessory]?) -} - -@available(iOS 14, *) -public extension UICollectionViewAdapterListCellProtocol where Self: UICollectionViewListCell { - func setAccessories(_ accessories: [UICellAccessory]?) { - guard let accessories else { return } - self.accessories = accessories - } -} - public extension UICollectionViewAdapterCellProtocol { static func getSize(_ data: Any? = nil, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { return self.fromXibSize() diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift index d5f0791..3bc79a5 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift @@ -34,16 +34,6 @@ public class UICollectionViewAdapterData { } } - @available(iOS 14, *) - public class ListCellInfo: CellInfo { - public var accessories: [UICellAccessory]? - - public init(kind: CellKind = .cell, contentObj: Any?, subData: [String: Any?]? = nil, accessories: [UICellAccessory]? = nil, sizeClosure: (() -> CGSize)? = nil, cellType: UICollectionViewListCell.Type, actionClosure: ActionClosure? = nil) { - super.init(kind: kind, contentObj: contentObj, subData: subData, sizeClosure: sizeClosure, cellType: cellType, actionClosure: actionClosure) - self.accessories = accessories - } - } - public class SectionInfo { public var header: CellInfo? { didSet { From b2e41f3244fcdf081853a6fdb6d3c7d7dbb0fcb0 Mon Sep 17 00:00:00 2001 From: Sunny Jeon Date: Tue, 16 Jul 2024 12:52:32 +0900 Subject: [PATCH 3/4] =?UTF-8?q?iOS=2014=20UICollectionViewListCell=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++++- .../TestCollectionViewListCell.swift | 31 +++++++++++++++ .../TestCollectionViewListCell.xib | 38 +++++++++++++++++++ .../ViewController.swift | 23 +++++++++++ .../CollectionViewAdapter.swift | 7 ++++ .../UICollectionViewAdapterCellProtocol.swift | 13 +++++++ .../UICollectionViewAdapterData.swift | 10 +++++ 7 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift create mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib diff --git a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj index 3c263f1..3a5b1e1 100644 --- a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj +++ b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */; }; 20AE47F428AB85F900EFBC9A /* CollectionViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */; }; 20AE47F628AB86EA00EFBC9A /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 20AE47F528AB86EA00EFBC9A /* README.md */; }; + 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */; }; + 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */; }; 5219671E22DD564000ABC0EF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671D22DD564000ABC0EF /* AppDelegate.swift */; }; 5219672022DD564000ABC0EF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671F22DD564000ABC0EF /* ViewController.swift */; }; 5219672322DD564000ABC0EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5219672122DD564000ABC0EF /* Main.storyboard */; }; @@ -34,6 +36,8 @@ 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewAdapter.swift; sourceTree = ""; }; 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewExtension.swift; sourceTree = ""; }; 20AE47F528AB86EA00EFBC9A /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCollectionViewListCell.swift; sourceTree = ""; }; + 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestCollectionViewListCell.xib; sourceTree = ""; }; 5219671A22DD564000ABC0EF /* CollectionViewAdapter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionViewAdapter.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5219671D22DD564000ABC0EF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 5219671F22DD564000ABC0EF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -111,6 +115,8 @@ 5219674122DD684900ABC0EF /* TestFooterCollectionReusableView.xib */, 5219673822DD5F6900ABC0EF /* TestCollectionViewCell.swift */, 5219673922DD5F6900ABC0EF /* TestCollectionViewCell.xib */, + 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */, + 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */, 5219672122DD564000ABC0EF /* Main.storyboard */, 5219672422DD564100ABC0EF /* Assets.xcassets */, 5219672622DD564100ABC0EF /* LaunchScreen.storyboard */, @@ -185,6 +191,7 @@ files = ( 5219674322DD684900ABC0EF /* TestFooterCollectionReusableView.xib in Resources */, 5219672822DD564100ABC0EF /* LaunchScreen.storyboard in Resources */, + 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */, 5219672522DD564100ABC0EF /* Assets.xcassets in Resources */, 20AE47F628AB86EA00EFBC9A /* README.md in Resources */, 5219673B22DD5F6900ABC0EF /* TestCollectionViewCell.xib in Resources */, @@ -201,6 +208,7 @@ buildActionMask = 2147483647; files = ( 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */, + 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */, 5219673E22DD60BF00ABC0EF /* TestCollectionReusableView.swift in Sources */, 205850DE2A8DF0E40085A8B0 /* UICollectionViewAdapterCellProtocol.swift in Sources */, 5219673A22DD5F6900ABC0EF /* TestCollectionViewCell.swift in Sources */, @@ -356,7 +364,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 7CMNW8US5Y; + DEVELOPMENT_TEAM = VZLG6PJDY3; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -374,7 +382,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 7CMNW8US5Y; + DEVELOPMENT_TEAM = VZLG6PJDY3; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift new file mode 100644 index 0000000..2e95292 --- /dev/null +++ b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift @@ -0,0 +1,31 @@ +// +// TestCollectionViewListCell.swift +// CollectionViewAdapter +// +// Created by SunSoo Jeon on 7/15/24. +// + +import UIKit + +@available(iOS 14.0, *) +class TestCollectionViewListCell: UICollectionViewListCell, +UICollectionViewAdapterListCellProtocol { + static var SpanSize: Int = 1 + + var actionClosure: ActionClosure? + @IBOutlet weak var label: UILabel! + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func configure(data: Any?, subData: Any?, collectionView: UICollectionView, indexPath: IndexPath, actionClosure: ActionClosure?) { + guard let data = data as? String else { return } + label.text = data + } + + static func getSize(data: Any?, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { + print("getSize: \(indexPath)") + return CGSize(width: width, height: 50) + } +} diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib new file mode 100644 index 0000000..0a5dfad --- /dev/null +++ b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example-iOS/CollectionViewAdapter/ViewController.swift b/Example-iOS/CollectionViewAdapter/ViewController.swift index 6f0c7c4..bf6701e 100644 --- a/Example-iOS/CollectionViewAdapter/ViewController.swift +++ b/Example-iOS/CollectionViewAdapter/ViewController.swift @@ -41,6 +41,29 @@ class ViewController: UIViewController { } sectionInfo.cells.append( cellInfo ) } + if #available(iOS 14, *) { + let listCellInfo = UICollectionViewAdapterData.ListCellInfo(contentObj: "cell (\(i) : \(sectionInfo.cells.count))", + accessories: [ + .delete(displayed: .always, + options: .init(isHidden: false, + reservedLayoutWidth: .standard, + tintColor: .white, + backgroundColor: .red), + actionHandler: { [weak self] in + guard let self else { return } + print("delete button tapped") + self.collectoinView.performBatchUpdates { + sectionInfo.cells.remove(at: sectionInfo.cells.count - 1) + self.collectoinView.deleteItems(at: [IndexPath(row: sectionInfo.cells.count, section: i)]) + } + })], + cellType: TestCollectionViewListCell.self) { [weak self] (name, object) in + guard let self else { return } + guard let object = object else { return } + self.alert(title: "", message: "\(object) : \(name)") + } + sectionInfo.cells.append( listCellInfo ) + } self.collectoinView.adapterData = testData self.collectoinView.isUsedCacheSize = true diff --git a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift index b0cc546..81f1c8f 100644 --- a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift +++ b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift @@ -354,6 +354,13 @@ public class UICollectionViewAdapter: NSObject, UICollectionViewDelegate, UIColl cell.configure(data: cellInfo.contentObj, subData: cellInfo.subData, collectionView: collectionView, indexPath: indexPath, actionClosure: cellInfo.actionClosure) } + if #available(iOS 14, *) { + if let cell = cell as? UICollectionViewAdapterListCellProtocol, + let listCellInfo = self.getCellInfo(indexPath) as? UICollectionViewAdapterData.ListCellInfo { + cell.setAccessories(listCellInfo.accessories) + } + } + return cell } diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift index 9ad7ca5..f53c517 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift @@ -41,6 +41,19 @@ public protocol UICollectionViewAdapterCellProtocol: UICollectionReusableView { func didUnhighlight(collectionView: UICollectionView, indexPath: IndexPath) } +@available(iOS 14, *) +public protocol UICollectionViewAdapterListCellProtocol: UICollectionViewAdapterCellProtocol { + func setAccessories(_ accessories: [UICellAccessory]?) +} + +@available(iOS 14, *) +public extension UICollectionViewAdapterListCellProtocol where Self: UICollectionViewListCell { + func setAccessories(_ accessories: [UICellAccessory]?) { + guard let accessories else { return } + self.accessories = accessories + } +} + public extension UICollectionViewAdapterCellProtocol { static func getSize(_ data: Any? = nil, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { return self.fromXibSize() diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift index 3bc79a5..d5f0791 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift @@ -34,6 +34,16 @@ public class UICollectionViewAdapterData { } } + @available(iOS 14, *) + public class ListCellInfo: CellInfo { + public var accessories: [UICellAccessory]? + + public init(kind: CellKind = .cell, contentObj: Any?, subData: [String: Any?]? = nil, accessories: [UICellAccessory]? = nil, sizeClosure: (() -> CGSize)? = nil, cellType: UICollectionViewListCell.Type, actionClosure: ActionClosure? = nil) { + super.init(kind: kind, contentObj: contentObj, subData: subData, sizeClosure: sizeClosure, cellType: cellType, actionClosure: actionClosure) + self.accessories = accessories + } + } + public class SectionInfo { public var header: CellInfo? { didSet { From eb8fe673b4f74fba2f62bd9031e63cc976cd2de7 Mon Sep 17 00:00:00 2001 From: Sunny Jeon Date: Wed, 24 Jul 2024 12:16:32 +0900 Subject: [PATCH 4/4] =?UTF-8?q?Revert=20"iOS=2014=20UICollectionViewListCe?= =?UTF-8?q?ll=20=EC=A7=80=EC=9B=90"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b2e41f3244fcdf081853a6fdb6d3c7d7dbb0fcb0. --- .../project.pbxproj | 12 +----- .../TestCollectionViewListCell.swift | 31 --------------- .../TestCollectionViewListCell.xib | 38 ------------------- .../ViewController.swift | 23 ----------- .../CollectionViewAdapter.swift | 7 ---- .../UICollectionViewAdapterCellProtocol.swift | 13 ------- .../UICollectionViewAdapterData.swift | 10 ----- 7 files changed, 2 insertions(+), 132 deletions(-) delete mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift delete mode 100644 Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib diff --git a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj index 3a5b1e1..3c263f1 100644 --- a/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj +++ b/Example-iOS/CollectionViewAdapter.xcodeproj/project.pbxproj @@ -14,8 +14,6 @@ 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */; }; 20AE47F428AB85F900EFBC9A /* CollectionViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */; }; 20AE47F628AB86EA00EFBC9A /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 20AE47F528AB86EA00EFBC9A /* README.md */; }; - 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */; }; - 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */; }; 5219671E22DD564000ABC0EF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671D22DD564000ABC0EF /* AppDelegate.swift */; }; 5219672022DD564000ABC0EF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219671F22DD564000ABC0EF /* ViewController.swift */; }; 5219672322DD564000ABC0EF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5219672122DD564000ABC0EF /* Main.storyboard */; }; @@ -36,8 +34,6 @@ 20AE47F128AB85F900EFBC9A /* CollectionViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewAdapter.swift; sourceTree = ""; }; 20AE47F228AB85F900EFBC9A /* CollectionViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewExtension.swift; sourceTree = ""; }; 20AE47F528AB86EA00EFBC9A /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCollectionViewListCell.swift; sourceTree = ""; }; - 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestCollectionViewListCell.xib; sourceTree = ""; }; 5219671A22DD564000ABC0EF /* CollectionViewAdapter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionViewAdapter.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5219671D22DD564000ABC0EF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 5219671F22DD564000ABC0EF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -115,8 +111,6 @@ 5219674122DD684900ABC0EF /* TestFooterCollectionReusableView.xib */, 5219673822DD5F6900ABC0EF /* TestCollectionViewCell.swift */, 5219673922DD5F6900ABC0EF /* TestCollectionViewCell.xib */, - 22E28BA22C460A7500689CA6 /* TestCollectionViewListCell.swift */, - 22E28BA32C460A7500689CA6 /* TestCollectionViewListCell.xib */, 5219672122DD564000ABC0EF /* Main.storyboard */, 5219672422DD564100ABC0EF /* Assets.xcassets */, 5219672622DD564100ABC0EF /* LaunchScreen.storyboard */, @@ -191,7 +185,6 @@ files = ( 5219674322DD684900ABC0EF /* TestFooterCollectionReusableView.xib in Resources */, 5219672822DD564100ABC0EF /* LaunchScreen.storyboard in Resources */, - 22E28BA52C460A7500689CA6 /* TestCollectionViewListCell.xib in Resources */, 5219672522DD564100ABC0EF /* Assets.xcassets in Resources */, 20AE47F628AB86EA00EFBC9A /* README.md in Resources */, 5219673B22DD5F6900ABC0EF /* TestCollectionViewCell.xib in Resources */, @@ -208,7 +201,6 @@ buildActionMask = 2147483647; files = ( 20AE47F328AB85F900EFBC9A /* CollectionViewAdapter.swift in Sources */, - 22E28BA42C460A7500689CA6 /* TestCollectionViewListCell.swift in Sources */, 5219673E22DD60BF00ABC0EF /* TestCollectionReusableView.swift in Sources */, 205850DE2A8DF0E40085A8B0 /* UICollectionViewAdapterCellProtocol.swift in Sources */, 5219673A22DD5F6900ABC0EF /* TestCollectionViewCell.swift in Sources */, @@ -364,7 +356,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = VZLG6PJDY3; + DEVELOPMENT_TEAM = 7CMNW8US5Y; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -382,7 +374,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = VZLG6PJDY3; + DEVELOPMENT_TEAM = 7CMNW8US5Y; INFOPLIST_FILE = CollectionViewAdapter/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift deleted file mode 100644 index 2e95292..0000000 --- a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// TestCollectionViewListCell.swift -// CollectionViewAdapter -// -// Created by SunSoo Jeon on 7/15/24. -// - -import UIKit - -@available(iOS 14.0, *) -class TestCollectionViewListCell: UICollectionViewListCell, -UICollectionViewAdapterListCellProtocol { - static var SpanSize: Int = 1 - - var actionClosure: ActionClosure? - @IBOutlet weak var label: UILabel! - override func awakeFromNib() { - super.awakeFromNib() - // Initialization code - } - - func configure(data: Any?, subData: Any?, collectionView: UICollectionView, indexPath: IndexPath, actionClosure: ActionClosure?) { - guard let data = data as? String else { return } - label.text = data - } - - static func getSize(data: Any?, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { - print("getSize: \(indexPath)") - return CGSize(width: width, height: 50) - } -} diff --git a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib b/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib deleted file mode 100644 index 0a5dfad..0000000 --- a/Example-iOS/CollectionViewAdapter/TestCollectionViewListCell.xib +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example-iOS/CollectionViewAdapter/ViewController.swift b/Example-iOS/CollectionViewAdapter/ViewController.swift index bf6701e..6f0c7c4 100644 --- a/Example-iOS/CollectionViewAdapter/ViewController.swift +++ b/Example-iOS/CollectionViewAdapter/ViewController.swift @@ -41,29 +41,6 @@ class ViewController: UIViewController { } sectionInfo.cells.append( cellInfo ) } - if #available(iOS 14, *) { - let listCellInfo = UICollectionViewAdapterData.ListCellInfo(contentObj: "cell (\(i) : \(sectionInfo.cells.count))", - accessories: [ - .delete(displayed: .always, - options: .init(isHidden: false, - reservedLayoutWidth: .standard, - tintColor: .white, - backgroundColor: .red), - actionHandler: { [weak self] in - guard let self else { return } - print("delete button tapped") - self.collectoinView.performBatchUpdates { - sectionInfo.cells.remove(at: sectionInfo.cells.count - 1) - self.collectoinView.deleteItems(at: [IndexPath(row: sectionInfo.cells.count, section: i)]) - } - })], - cellType: TestCollectionViewListCell.self) { [weak self] (name, object) in - guard let self else { return } - guard let object = object else { return } - self.alert(title: "", message: "\(object) : \(name)") - } - sectionInfo.cells.append( listCellInfo ) - } self.collectoinView.adapterData = testData self.collectoinView.isUsedCacheSize = true diff --git a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift index 81f1c8f..b0cc546 100644 --- a/Sources/CollectionViewAdapter/CollectionViewAdapter.swift +++ b/Sources/CollectionViewAdapter/CollectionViewAdapter.swift @@ -354,13 +354,6 @@ public class UICollectionViewAdapter: NSObject, UICollectionViewDelegate, UIColl cell.configure(data: cellInfo.contentObj, subData: cellInfo.subData, collectionView: collectionView, indexPath: indexPath, actionClosure: cellInfo.actionClosure) } - if #available(iOS 14, *) { - if let cell = cell as? UICollectionViewAdapterListCellProtocol, - let listCellInfo = self.getCellInfo(indexPath) as? UICollectionViewAdapterData.ListCellInfo { - cell.setAccessories(listCellInfo.accessories) - } - } - return cell } diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift index f53c517..9ad7ca5 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterCellProtocol.swift @@ -41,19 +41,6 @@ public protocol UICollectionViewAdapterCellProtocol: UICollectionReusableView { func didUnhighlight(collectionView: UICollectionView, indexPath: IndexPath) } -@available(iOS 14, *) -public protocol UICollectionViewAdapterListCellProtocol: UICollectionViewAdapterCellProtocol { - func setAccessories(_ accessories: [UICellAccessory]?) -} - -@available(iOS 14, *) -public extension UICollectionViewAdapterListCellProtocol where Self: UICollectionViewListCell { - func setAccessories(_ accessories: [UICellAccessory]?) { - guard let accessories else { return } - self.accessories = accessories - } -} - public extension UICollectionViewAdapterCellProtocol { static func getSize(_ data: Any? = nil, width: CGFloat, collectionView: UICollectionView, indexPath: IndexPath) -> CGSize { return self.fromXibSize() diff --git a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift index d5f0791..3bc79a5 100644 --- a/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift +++ b/Sources/CollectionViewAdapter/UICollectionViewAdapterData.swift @@ -34,16 +34,6 @@ public class UICollectionViewAdapterData { } } - @available(iOS 14, *) - public class ListCellInfo: CellInfo { - public var accessories: [UICellAccessory]? - - public init(kind: CellKind = .cell, contentObj: Any?, subData: [String: Any?]? = nil, accessories: [UICellAccessory]? = nil, sizeClosure: (() -> CGSize)? = nil, cellType: UICollectionViewListCell.Type, actionClosure: ActionClosure? = nil) { - super.init(kind: kind, contentObj: contentObj, subData: subData, sizeClosure: sizeClosure, cellType: cellType, actionClosure: actionClosure) - self.accessories = accessories - } - } - public class SectionInfo { public var header: CellInfo? { didSet {