|
@@ -1,81 +0,0 @@
|
|
|
-//
|
|
|
-// CollectionActionSheet.swift
|
|
|
-// SheeeeeeeeetExample
|
|
|
-//
|
|
|
-// Created by Jonas Ullström on 2018-03-16.
|
|
|
-// Copyright © 2018 Jonas Ullström. All rights reserved.
|
|
|
-//
|
|
|
-
|
|
|
-/*
|
|
|
-
|
|
|
- This action sheet calls `setupItemsAndButtons` after it has
|
|
|
- been initialized, since taps in the collection view have to
|
|
|
- reload the action sheet to update selection display.
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
-import Sheeeeeeeeet
|
|
|
-
|
|
|
-class CollectionActionSheet: ActionSheet {
|
|
|
-
|
|
|
- init(options: [FoodOption], action: @escaping ([MyCollectionViewCell.Item]) -> ()) {
|
|
|
- let collectionItems = CollectionActionSheet.collectionItems
|
|
|
- super.init(items: []) { _, item in
|
|
|
- guard item.isOkButton else { return }
|
|
|
- action(collectionItems.filter { $0.isSelected })
|
|
|
- }
|
|
|
- let items = self.items(for: options, collectionItems: collectionItems)
|
|
|
- setup(items: items)
|
|
|
- }
|
|
|
-
|
|
|
- required init?(coder aDecoder: NSCoder) {
|
|
|
- super.init(coder: aDecoder)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-private extension CollectionActionSheet {
|
|
|
-
|
|
|
- static var collectionItems: [MyCollectionViewCell.Item] {
|
|
|
- var items: [MyCollectionViewCell.Item] = []
|
|
|
- for i in 0...20 {
|
|
|
- items.append(MyCollectionViewCell.Item(title: "\(i)", subtitle: "\(i)"))
|
|
|
- }
|
|
|
- return items
|
|
|
- }
|
|
|
-
|
|
|
- func items(for options: [FoodOption], collectionItems: [MyCollectionViewCell.Item]) -> [ActionSheetItem] {
|
|
|
- let title = ActionSheetSectionTitle(title: ActionSheet.standardTitle, subtitle: selectionSubtitle(for: collectionItems))
|
|
|
-
|
|
|
- let setupAction = { (cell: MyCollectionViewCell, index: Int) in
|
|
|
- let item = collectionItems[index]
|
|
|
- cell.configureWith(item: item)
|
|
|
- }
|
|
|
-
|
|
|
- let selectionAction = { [weak self] (cell: MyCollectionViewCell, index: Int) in
|
|
|
- let item = collectionItems[index]
|
|
|
- item.isSelected = !item.isSelected
|
|
|
- title.subtitle = self?.selectionSubtitle(for: collectionItems)
|
|
|
- cell.configureWith(item: item)
|
|
|
- self?.reloadData()
|
|
|
- }
|
|
|
-
|
|
|
- let collectionItem = ActionSheetCollectionItem(
|
|
|
- itemCellType: MyCollectionViewCell.self,
|
|
|
- itemCount: collectionItems.count,
|
|
|
- setupAction: setupAction,
|
|
|
- selectionAction: selectionAction
|
|
|
- )
|
|
|
-
|
|
|
- return [
|
|
|
- ActionSheetSectionMargin(),
|
|
|
- title,
|
|
|
- ActionSheetSectionMargin(),
|
|
|
- collectionItem,
|
|
|
- ActionSheet.okButton,
|
|
|
- ActionSheet.cancelButton]
|
|
|
- }
|
|
|
-
|
|
|
- func selectionSubtitle(for collectionItems: [MyCollectionViewCell.Item]) -> String {
|
|
|
- return "Selected items: \(collectionItems.filter { $0.isSelected }.count)"
|
|
|
- }
|
|
|
-}
|