From 9764f33086d3f6aa0149eccaf20fd83da4229ed7 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Thu, 17 Oct 2019 12:32:47 +0900 Subject: [PATCH] update demo app --- .../CoreStoreDemo/Base.lproj/Main.storyboard | 11 ++++- .../ListObserverDemoViewController.swift | 48 +++++++++++-------- .../ObserversViewController.swift | 23 +++++++-- Sources/DiffableDataSource.TableView.swift | 15 ++++++ 4 files changed, 70 insertions(+), 27 deletions(-) diff --git a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard index 71b7f7d..3805cbc 100644 --- a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard +++ b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard @@ -682,6 +682,9 @@ + + + @@ -900,7 +903,7 @@ - + @@ -961,6 +964,9 @@ + + + @@ -1170,4 +1176,7 @@ + + + diff --git a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift index 9eb2555..72daae2 100644 --- a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift @@ -12,7 +12,32 @@ import CoreStore // MARK: - ListObserverDemoViewController -class ListObserverDemoViewController: UITableViewController { +final class ListObserverDemoViewController: UITableViewController { + + // MARK: - EditableDataSource + + final class EditableDataSource: DiffableDataSource.TableView { + + override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { + + switch editingStyle { + + case .delete: + let palette = ColorsDemo.palettes[indexPath: indexPath] + ColorsDemo.stack.perform( + asynchronous: { (transaction) in + + transaction.delete(palette) + }, + completion: { _ in } + ) + + default: + break + } + } + } + // MARK: UIViewController @@ -51,7 +76,7 @@ class ListObserverDemoViewController: UITableViewController { ] self.filterBarButton = filterBarButton - self.dataSource = DiffableDataSource.TableView( + self.dataSource = EditableDataSource( tableView: self.tableView, dataStack: ColorsDemo.stack, cellProvider: { (tableView, indexPath, palette) in @@ -101,25 +126,6 @@ class ListObserverDemoViewController: UITableViewController { ) } - override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { - - switch editingStyle { - - case .delete: - let palette = ColorsDemo.palettes[indexPath: indexPath] - ColorsDemo.stack.perform( - asynchronous: { (transaction) in - - transaction.delete(palette) - }, - completion: { _ in } - ) - - default: - break - } - } - // MARK: Private diff --git a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObserversViewController.swift b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObserversViewController.swift index cbaa477..9731e94 100644 --- a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObserversViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObserversViewController.swift @@ -30,17 +30,30 @@ class ObserversViewController: UIViewController { // MARK: Private - + + @IBOutlet private dynamic weak var toggleTopBarButtonItem: UIBarButtonItem? + @IBOutlet private dynamic weak var toggleBottomBarButtonItem: UIBarButtonItem? + @IBOutlet private dynamic weak var stackView: UIStackView? @IBOutlet private dynamic weak var topContainerView: UIView? @IBOutlet private dynamic weak var bottomContainerView: UIView? @IBAction private dynamic func toggleTopContainerView() { - - self.topContainerView?.isHidden.toggle() + + UIView.animate(withDuration: 0.2) { + + self.topContainerView!.isHidden.toggle() + } + self.toggleTopBarButtonItem!.isEnabled = !self.bottomContainerView!.isHidden + self.toggleBottomBarButtonItem!.isEnabled = !self.topContainerView!.isHidden } @IBAction private dynamic func toggleBottomContainerView() { - - self.bottomContainerView?.isHidden.toggle() + + UIView.animate(withDuration: 0.2) { + + self.bottomContainerView!.isHidden.toggle() + } + self.toggleTopBarButtonItem!.isEnabled = !self.bottomContainerView!.isHidden + self.toggleBottomBarButtonItem!.isEnabled = !self.topContainerView!.isHidden } } diff --git a/Sources/DiffableDataSource.TableView.swift b/Sources/DiffableDataSource.TableView.swift index 69976e8..eedc726 100644 --- a/Sources/DiffableDataSource.TableView.swift +++ b/Sources/DiffableDataSource.TableView.swift @@ -215,6 +215,21 @@ extension DiffableDataSource { // } } + @objc + open dynamic func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { + + return true + } + + @objc + open dynamic func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle { + + return .delete + } + + @objc + open dynamic func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {} + // MARK: Private