ControllerRetainer

This commit is contained in:
Chris Li 2016-08-31 14:12:17 -04:00
parent 2d96977377
commit b772b96037
6 changed files with 49 additions and 9 deletions

View File

@ -0,0 +1,35 @@
//
// ControllerRetainer.swift
// Kiwix
//
// Created by Chris Li on 8/31/16.
// Copyright © 2016 Chris. All rights reserved.
//
import UIKit
class ControllerRetainer {
static let shared = ControllerRetainer()
private init() {}
private var libraryStore: UIViewController?
private func releaseLibrary() {libraryStore = nil}
var library: UIViewController {
let controller = libraryStore ?? UIStoryboard.library.instantiateInitialViewController()
libraryStore = controller
return controller!
}
func didDismissLibrary() {
if #available(iOS 10, *) {
NSTimer.scheduledTimerWithTimeInterval(120.0, repeats: false, block: { (timer) in
print("set nil")
self.libraryStore = nil
})
} else {
NSTimer.scheduledTimerWithTimeInterval(120.0, target: self, selector: Selector("releaseLibrary"), userInfo: nil, repeats: false)
}
}
}

View File

@ -26,9 +26,13 @@ class LibrarySplitViewController: UISplitViewController, UISplitViewControllerDe
}
func dismiss() {
dismissViewControllerAnimated(true, completion: nil)
dismissViewControllerAnimated(true) {
ControllerRetainer.shared.didDismissLibrary()
}
}
// MARK: - UISplitViewControllerDelegate
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
guard !isShowingLangFilter else {return false}
return true

View File

@ -22,7 +22,6 @@ class MainController: UIViewController {
var tableOfContentsController: TableOfContentsController?
var bookmarkController: BookmarkController?
var bookmarkNav: UIViewController?
var libraryController: UIViewController?
var settingController: UIViewController?
var searchController: SearchController?
var welcomeController: UIViewController?
@ -86,7 +85,6 @@ class MainController: UIViewController {
tableOfContentsController = nil
bookmarkController = nil
bookmarkNav = nil
libraryController = nil
settingController = nil
searchController = nil
welcomeController = nil
@ -240,10 +238,9 @@ class MainController: UIViewController {
}
func showLibraryButtonTapped() {
guard let viewController = libraryController ?? UIStoryboard.library.instantiateInitialViewController() else {return}
viewController.modalPresentationStyle = .FullScreen
libraryController = viewController
presentViewController(viewController, animated: true, completion: nil)
let controller = ControllerRetainer.shared.library
controller.modalPresentationStyle = .FullScreen
presentViewController(controller, animated: true, completion: nil)
}
func showSettingButtonTapped() {

View File

@ -49,7 +49,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.7.1643</string>
<string>1.7.1666</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>

View File

@ -21,7 +21,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.7.2083</string>
<string>1.7.2122</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>

View File

@ -85,6 +85,7 @@
979CB60F1D04AD04005E1BA1 /* PreferenceTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979CB60E1D04AD04005E1BA1 /* PreferenceTabController.swift */; };
979CB6C81D05CF37005E1BA1 /* SearchResultController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979CB6C71D05CF37005E1BA1 /* SearchResultController.swift */; };
979CB6CA1D05D26E005E1BA1 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979CB6C91D05D26E005E1BA1 /* WebViewController.swift */; };
97A127C41D774C9900FB204D /* ControllerRetainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A127C31D774C9900FB204D /* ControllerRetainer.swift */; };
97A1FD161D6F71CE00A80EE2 /* DirectoryMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD121D6F71CE00A80EE2 /* DirectoryMonitor.swift */; };
97A1FD171D6F71CE00A80EE2 /* ExtensionAndTypealias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD131D6F71CE00A80EE2 /* ExtensionAndTypealias.swift */; };
97A1FD181D6F71CE00A80EE2 /* SearchResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD141D6F71CE00A80EE2 /* SearchResult.swift */; };
@ -297,6 +298,7 @@
979CB60E1D04AD04005E1BA1 /* PreferenceTabController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PreferenceTabController.swift; path = Controllers/PreferenceTabController.swift; sourceTree = "<group>"; };
979CB6C71D05CF37005E1BA1 /* SearchResultController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchResultController.swift; path = Controllers/SearchResultController.swift; sourceTree = "<group>"; };
979CB6C91D05D26E005E1BA1 /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebViewController.swift; path = Controllers/WebViewController.swift; sourceTree = "<group>"; };
97A127C31D774C9900FB204D /* ControllerRetainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerRetainer.swift; sourceTree = "<group>"; };
97A1FD121D6F71CE00A80EE2 /* DirectoryMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryMonitor.swift; sourceTree = "<group>"; };
97A1FD131D6F71CE00A80EE2 /* ExtensionAndTypealias.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExtensionAndTypealias.swift; sourceTree = "<group>"; };
97A1FD141D6F71CE00A80EE2 /* SearchResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchResult.swift; sourceTree = "<group>"; };
@ -817,6 +819,7 @@
9771DC4B1C37278E009ECFF0 /* Setting */,
97D55EF51D2075180081B523 /* TableOfContentsController.swift */,
97A7017E1D2C59CA00AAE2D8 /* GetStartedController.swift */,
97A127C31D774C9900FB204D /* ControllerRetainer.swift */,
);
name = Controllers;
path = Controller;
@ -1526,6 +1529,7 @@
971A10401D022C42007FC62C /* LibraryUseCellularDataTBVC.swift in Sources */,
97D681411D6F712800E5FA99 /* DownloadTask+CoreDataProperties.swift in Sources */,
97D681391D6F711A00E5FA99 /* DownloadTask.swift in Sources */,
97A127C41D774C9900FB204D /* ControllerRetainer.swift in Sources */,
97D681321D6F70EC00E5FA99 /* MigrationPolicy.swift in Sources */,
97D6811B1D6E2A7100E5FA99 /* DownloadTasksController.swift in Sources */,
97D681261D6F70AC00E5FA99 /* SearchOperation.swift in Sources */,