RootViewController swap instead of present.
This commit is contained in:
parent
9ef39c8cfb
commit
e65b238164
@ -14,6 +14,7 @@ import VDS
|
|||||||
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
|
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
|
||||||
|
|
||||||
var window: UIWindow?
|
var window: UIWindow?
|
||||||
|
var splitViewController: UISplitViewController?
|
||||||
var mvcNav: UINavigationController?
|
var mvcNav: UINavigationController?
|
||||||
var dvcNav: UINavigationController?
|
var dvcNav: UINavigationController?
|
||||||
var mvc: UIViewController?
|
var mvc: UIViewController?
|
||||||
@ -28,19 +29,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
|||||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||||
|
|
||||||
// Override point for customization after application launch.
|
// Override point for customization after application launch.
|
||||||
let splitViewController = window!.rootViewController as! UISplitViewController
|
splitViewController = window!.rootViewController as? UISplitViewController
|
||||||
mvcNav = splitViewController.viewControllers[0] as? UINavigationController
|
NavigationHandler.shared().viewControllerToPresentOn = splitViewController
|
||||||
|
mvcNav = splitViewController?.viewControllers[0] as? UINavigationController
|
||||||
mvcNav?.delegate = self
|
mvcNav?.delegate = self
|
||||||
mvc = mvcNav?.topViewController
|
mvc = mvcNav?.topViewController
|
||||||
dvcNav = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as? UINavigationController
|
dvcNav = splitViewController?.viewControllers[splitViewController!.viewControllers.count-1] as? UINavigationController
|
||||||
dvc = dvcNav?.topViewController
|
dvc = dvcNav?.topViewController
|
||||||
dvc?.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
|
dvc?.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
|
||||||
dvc?.navigationItem.leftItemsSupplementBackButton = true
|
dvc?.navigationItem.leftItemsSupplementBackButton = true
|
||||||
splitViewController.delegate = self
|
splitViewController?.delegate = self
|
||||||
splitViewController.preferredDisplayMode = .allVisible
|
splitViewController?.preferredDisplayMode = .allVisible
|
||||||
|
|
||||||
let gr = UILongPressGestureRecognizer(target: self, action: #selector(jsonPasteAndGo))
|
let gr = UILongPressGestureRecognizer(target: self, action: #selector(jsonPasteAndGo))
|
||||||
splitViewController.view.addGestureRecognizer(gr)
|
splitViewController?.view.addGestureRecognizer(gr)
|
||||||
|
|
||||||
NotificationCenter.default.addObserver(forName: UIViewController.showDetailTargetDidChangeNotification, object: splitViewController, queue: nil) { [weak self] (notification) in
|
NotificationCenter.default.addObserver(forName: UIViewController.showDetailTargetDidChangeNotification, object: splitViewController, queue: nil) { [weak self] (notification) in
|
||||||
if let strongSelf = self, let svc = notification.object as? UISplitViewController {
|
if let strongSelf = self, let svc = notification.object as? UISplitViewController {
|
||||||
|
|||||||
@ -20,9 +20,7 @@ class DetailViewController: UIViewController {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
modalPresentationStyle = .formSheet
|
modalPresentationStyle = .fullScreen
|
||||||
NavigationHandler.shared().viewControllerToPresentOn = self
|
|
||||||
|
|
||||||
view.addSubview(textView)
|
view.addSubview(textView)
|
||||||
if UIDevice.current.userInterfaceIdiom == .pad {
|
if UIDevice.current.userInterfaceIdiom == .pad {
|
||||||
textView.font = UIFont.systemFont(ofSize: 40)
|
textView.font = UIFont.systemFont(ofSize: 40)
|
||||||
@ -78,7 +76,7 @@ class DetailViewController: UIViewController {
|
|||||||
let loadObject = MVMCoreLoadObject(pageJSON: page, modulesJSON: jsonObject.optionalDictionaryForKey(KeyModuleMap), requestParameters: nil, dataForPage: nil, delegateObject: nil),
|
let loadObject = MVMCoreLoadObject(pageJSON: page, modulesJSON: jsonObject.optionalDictionaryForKey(KeyModuleMap), requestParameters: nil, dataForPage: nil, delegateObject: nil),
|
||||||
viewController.shouldFinishProcessingLoad(loadObject, error: &errorObject) {
|
viewController.shouldFinishProcessingLoad(loadObject, error: &errorObject) {
|
||||||
|
|
||||||
Task(priority: .userInitiated) {
|
Task(priority: .userInitiated) { @MainActor in
|
||||||
let gr = UILongPressGestureRecognizer(target: self, action: #selector(DetailViewController.close))
|
let gr = UILongPressGestureRecognizer(target: self, action: #selector(DetailViewController.close))
|
||||||
viewController.view.addGestureRecognizer(gr)
|
viewController.view.addGestureRecognizer(gr)
|
||||||
|
|
||||||
@ -86,7 +84,6 @@ class DetailViewController: UIViewController {
|
|||||||
CoreUIObject.sharedInstance()?.topNotificationHandler = NotificationHandler(with: topAlert)
|
CoreUIObject.sharedInstance()?.topNotificationHandler = NotificationHandler(with: topAlert)
|
||||||
let split = MVMCoreUISplitViewController.setup(asMainController: nil, rightPanel: nil, topAlert: topAlert)!
|
let split = MVMCoreUISplitViewController.setup(asMainController: nil, rightPanel: nil, topAlert: topAlert)!
|
||||||
_ = split.view // Force loadView
|
_ = split.view // Force loadView
|
||||||
//split.navigationController?.setViewControllers([viewController], animated: false)
|
|
||||||
|
|
||||||
let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.close))
|
let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.close))
|
||||||
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
|
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
|
||||||
@ -94,8 +91,8 @@ class DetailViewController: UIViewController {
|
|||||||
viewController.setToolbarItems([spacer, done], animated: false)
|
viewController.setToolbarItems([spacer, done], animated: false)
|
||||||
split.navigationController?.setToolbarItems([spacer, done], animated: false)
|
split.navigationController?.setToolbarItems([spacer, done], animated: false)
|
||||||
|
|
||||||
NavigationHandler.shared().viewControllerToPresentOn = splitViewController
|
NavigationHandler.shared().viewControllerToPresentOn = split
|
||||||
await NavigationHandler.shared().present(viewController: split)
|
UIApplication.shared.delegate?.window??.rootViewController = split
|
||||||
await NavigationHandler.shared().push(viewController: viewController, animated: false)
|
await NavigationHandler.shared().push(viewController: viewController, animated: false)
|
||||||
}
|
}
|
||||||
} else if let errorObject = errorObject {
|
} else if let errorObject = errorObject {
|
||||||
@ -109,10 +106,9 @@ class DetailViewController: UIViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc func close() {
|
@objc func close() {
|
||||||
guard let splitViewController = splitViewController else { return }
|
guard let splitViewController = (UIApplication.shared.delegate as? AppDelegate)?.splitViewController else { return }
|
||||||
Task(priority: .userInitiated) {
|
NavigationHandler.shared().viewControllerToPresentOn = splitViewController
|
||||||
await NavigationHandler.shared().navigate(with: .dismiss(viewController: splitViewController))
|
UIApplication.shared.delegate?.window??.rootViewController = splitViewController
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user