Remembers previous game collection when returning to GamesViewController

This commit is contained in:
Riley Testut 2016-12-11 18:24:57 -08:00
parent 64f1b66431
commit 3311c04a07
2 changed files with 32 additions and 2 deletions

View File

@ -206,7 +206,7 @@ private extension GamesViewController
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 })
{
@ -228,7 +228,17 @@ private extension GamesViewController
// Reset page view controller if currently hidden or current child should view controller no longer exists
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.backgroundView.setHidden(true, animated: animated)
@ -236,6 +246,7 @@ private extension GamesViewController
self.pageViewController.setViewControllers([viewController], direction: .forward, animated: false, completion: nil)
self.title = viewController.title
self.pageControl.currentPage = index
}
}
else
@ -334,6 +345,12 @@ extension GamesViewController: UIPageViewControllerDataSource, UIPageViewControl
{
let index = self.fetchedResultsController.fetchedObjects?.index(where: { $0 as! GameCollection == gameCollection }) ?? 0
self.pageControl.currentPage = index
Settings.previousGameCollection = gameCollection
}
else
{
Settings.previousGameCollection = nil
}
self.title = pageViewController.viewControllers?.first?.title

View File

@ -54,6 +54,18 @@ struct Settings
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()
{
let defaults = [#keyPath(UserDefaults.translucentControllerSkinOpacity): 1.0]
@ -146,4 +158,5 @@ private extension Settings
private extension UserDefaults
{
@NSManaged var translucentControllerSkinOpacity: CGFloat
@NSManaged var previousGameCollectionIdentifier: String?
}