Remembers previous game collection when returning to GamesViewController
This commit is contained in:
parent
64f1b66431
commit
3311c04a07
@ -206,7 +206,7 @@ private extension GamesViewController
|
|||||||
|
|
||||||
var resetPageViewController = false
|
var resetPageViewController = false
|
||||||
|
|
||||||
if let viewController = pageViewController.viewControllers?.first as? GameCollectionViewController, let gameCollection = viewController.gameCollection
|
if let viewController = self.pageViewController.viewControllers?.first as? GameCollectionViewController, let gameCollection = viewController.gameCollection
|
||||||
{
|
{
|
||||||
if let index = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection })
|
if let index = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection })
|
||||||
{
|
{
|
||||||
@ -228,7 +228,17 @@ private extension GamesViewController
|
|||||||
// Reset page view controller if currently hidden or current child should view controller no longer exists
|
// Reset page view controller if currently hidden or current child should view controller no longer exists
|
||||||
if self.pageViewController.view.isHidden || resetPageViewController
|
if self.pageViewController.view.isHidden || resetPageViewController
|
||||||
{
|
{
|
||||||
if let viewController = self.viewControllerForIndex(0)
|
var index = 0
|
||||||
|
|
||||||
|
if let gameCollection = Settings.previousGameCollection
|
||||||
|
{
|
||||||
|
if let gameCollectionIndex = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection })
|
||||||
|
{
|
||||||
|
index = gameCollectionIndex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let viewController = self.viewControllerForIndex(index)
|
||||||
{
|
{
|
||||||
self.pageViewController.view.setHidden(false, animated: animated)
|
self.pageViewController.view.setHidden(false, animated: animated)
|
||||||
self.backgroundView.setHidden(true, animated: animated)
|
self.backgroundView.setHidden(true, animated: animated)
|
||||||
@ -236,6 +246,7 @@ private extension GamesViewController
|
|||||||
self.pageViewController.setViewControllers([viewController], direction: .forward, animated: false, completion: nil)
|
self.pageViewController.setViewControllers([viewController], direction: .forward, animated: false, completion: nil)
|
||||||
|
|
||||||
self.title = viewController.title
|
self.title = viewController.title
|
||||||
|
self.pageControl.currentPage = index
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -334,6 +345,12 @@ extension GamesViewController: UIPageViewControllerDataSource, UIPageViewControl
|
|||||||
{
|
{
|
||||||
let index = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection }) ?? 0
|
let index = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection }) ?? 0
|
||||||
self.pageControl.currentPage = index
|
self.pageControl.currentPage = index
|
||||||
|
|
||||||
|
Settings.previousGameCollection = gameCollection
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Settings.previousGameCollection = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
self.title = pageViewController.viewControllers?.first?.title
|
self.title = pageViewController.viewControllers?.first?.title
|
||||||
|
|||||||
@ -54,6 +54,18 @@ struct Settings
|
|||||||
get { return UserDefaults.standard.translucentControllerSkinOpacity }
|
get { return UserDefaults.standard.translucentControllerSkinOpacity }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static var previousGameCollection: GameCollection? {
|
||||||
|
set { UserDefaults.standard.previousGameCollectionIdentifier = newValue?.identifier }
|
||||||
|
get {
|
||||||
|
guard let identifier = UserDefaults.standard.previousGameCollectionIdentifier else { return nil }
|
||||||
|
|
||||||
|
let predicate = NSPredicate(format: "%K == %@", #keyPath(GameCollection.identifier), identifier)
|
||||||
|
|
||||||
|
let gameCollection = GameCollection.instancesWithPredicate(predicate, inManagedObjectContext: DatabaseManager.shared.viewContext, type: GameCollection.self)
|
||||||
|
return gameCollection.first
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static func registerDefaults()
|
static func registerDefaults()
|
||||||
{
|
{
|
||||||
let defaults = [#keyPath(UserDefaults.translucentControllerSkinOpacity): 1.0]
|
let defaults = [#keyPath(UserDefaults.translucentControllerSkinOpacity): 1.0]
|
||||||
@ -146,4 +158,5 @@ private extension Settings
|
|||||||
private extension UserDefaults
|
private extension UserDefaults
|
||||||
{
|
{
|
||||||
@NSManaged var translucentControllerSkinOpacity: CGFloat
|
@NSManaged var translucentControllerSkinOpacity: CGFloat
|
||||||
|
@NSManaged var previousGameCollectionIdentifier: String?
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user