diff --git a/Kiwix-iOS/Controller/ControllerRetainer.swift b/Kiwix-iOS/Controller/ControllerRetainer.swift
new file mode 100644
index 00000000..303fc07d
--- /dev/null
+++ b/Kiwix-iOS/Controller/ControllerRetainer.swift
@@ -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)
+ }
+ }
+
+}
diff --git a/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift b/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift
index a3f8f601..6f63cfb6 100644
--- a/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift
+++ b/Kiwix-iOS/Controller/Library/LibrarySplitViewController.swift
@@ -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
diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift
index 0da5dc4f..94ce8ba7 100644
--- a/Kiwix-iOS/Controller/Main/MainController.swift
+++ b/Kiwix-iOS/Controller/Main/MainController.swift
@@ -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() {
diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist
index 76d240d9..1d311050 100644
--- a/Kiwix-iOS/Info.plist
+++ b/Kiwix-iOS/Info.plist
@@ -49,7 +49,7 @@
CFBundleVersion
- 1.7.1643
+ 1.7.1666
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist
index 4217941a..5957841a 100644
--- a/Kiwix-iOSWidgets/Bookmarks/Info.plist
+++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist
@@ -21,7 +21,7 @@
CFBundleSignature
????
CFBundleVersion
- 1.7.2083
+ 1.7.2122
NSExtension
NSExtensionMainStoryboard
diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj
index f4fe746b..2c0e5c50 100644
--- a/Kiwix.xcodeproj/project.pbxproj
+++ b/Kiwix.xcodeproj/project.pbxproj
@@ -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 = ""; };
979CB6C71D05CF37005E1BA1 /* SearchResultController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SearchResultController.swift; path = Controllers/SearchResultController.swift; sourceTree = ""; };
979CB6C91D05D26E005E1BA1 /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebViewController.swift; path = Controllers/WebViewController.swift; sourceTree = ""; };
+ 97A127C31D774C9900FB204D /* ControllerRetainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerRetainer.swift; sourceTree = ""; };
97A1FD121D6F71CE00A80EE2 /* DirectoryMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryMonitor.swift; sourceTree = ""; };
97A1FD131D6F71CE00A80EE2 /* ExtensionAndTypealias.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExtensionAndTypealias.swift; sourceTree = ""; };
97A1FD141D6F71CE00A80EE2 /* SearchResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchResult.swift; sourceTree = ""; };
@@ -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 */,