From b5411cde42c8b1d718a09a80e3cfbea448a6fce9 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 18 Jul 2019 18:49:27 -0500 Subject: [PATCH] Fix detail navigation controller code --- iOS/AppCoordinator.swift | 12 +++---- iOS/Base.lproj/Main.storyboard | 36 +++++++++++++++---- iOS/Detail/SystemMessageViewController.swift | 2 +- .../UISplitViewController-Extensions.swift | 7 ++++ 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/iOS/AppCoordinator.swift b/iOS/AppCoordinator.swift index 77b2261bf..8994beb41 100644 --- a/iOS/AppCoordinator.swift +++ b/iOS/AppCoordinator.swift @@ -207,9 +207,8 @@ class AppCoordinator: UndoableCommandRunner { rootSplitViewController.delegate = self masterNavigationController = (rootSplitViewController.viewControllers.first as! UINavigationController) - masterFeedViewController = UIStoryboard.main.instantiateController(ofType: MasterFeedViewController.self) + masterFeedViewController = (masterNavigationController.topViewController as! MasterFeedViewController) masterFeedViewController.coordinator = self - masterNavigationController.pushViewController(masterFeedViewController, animated: false) // let detailNavigationController = (rootSplitViewController.viewControllers.last as! UINavigationController) // detailNavigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem @@ -447,17 +446,18 @@ class AppCoordinator: UndoableCommandRunner { } func selectArticle(_ indexPath: IndexPath) { - if let detailNavController = rootSplitViewController.viewControllers.last as? UINavigationController, - let _ = detailNavController.topViewController as? DetailViewController { + if let detailNavigationController = rootSplitViewController.viewControllers.last as? UINavigationController, + let _ = detailNavigationController.topViewController as? DetailViewController { currentArticleIndexPath = indexPath } else { - let detailViewController = UIStoryboard.main.instantiateController(ofType: DetailViewController.self) + let detailNavigationController = UIStoryboard.main.instantiateViewController(identifier: "DetailNavigationController") as! UINavigationController + let detailViewController = detailNavigationController.topViewController as! DetailViewController detailViewController.coordinator = self detailViewController.navigationItem.leftBarButtonItem = rootSplitViewController.displayModeButtonItem detailViewController.navigationItem.leftItemsSupplementBackButton = true currentArticleIndexPath = indexPath // rootSplitViewController.toggleMasterView() - rootSplitViewController.showDetailViewController(detailViewController, sender: self) + rootSplitViewController.showDetailViewController(detailNavigationController, sender: self) } } diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 6edd0924c..f9b62e18d 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -19,6 +19,9 @@ + + + @@ -33,7 +36,7 @@ - + @@ -134,7 +137,23 @@ - + + + + + + + + + + + + + + + + + @@ -158,6 +177,7 @@ + @@ -165,7 +185,7 @@ - + @@ -221,7 +241,7 @@ - + @@ -283,17 +303,21 @@ - + + + + + - + diff --git a/iOS/Detail/SystemMessageViewController.swift b/iOS/Detail/SystemMessageViewController.swift index a3044ddb3..cafd2397e 100644 --- a/iOS/Detail/SystemMessageViewController.swift +++ b/iOS/Detail/SystemMessageViewController.swift @@ -11,7 +11,7 @@ import UIKit class SystemMessageViewController: UIViewController { @IBOutlet weak var messageLabel: UILabel! - var message: String? + var message: String = NSLocalizedString("No Selection", comment: "No Selection") override func viewDidLoad() { super.viewDidLoad() diff --git a/iOS/Extensions/UISplitViewController-Extensions.swift b/iOS/Extensions/UISplitViewController-Extensions.swift index 98fa33c5d..fc2ffb229 100644 --- a/iOS/Extensions/UISplitViewController-Extensions.swift +++ b/iOS/Extensions/UISplitViewController-Extensions.swift @@ -10,6 +10,13 @@ import UIKit extension UISplitViewController { + static func template() -> UISplitViewController { + let splitViewController = UISplitViewController() + splitViewController.preferredDisplayMode = .allVisible + splitViewController.viewControllers = [UINavigationController()] + return splitViewController + } + func toggleMasterView() { let barButtonItem = self.displayModeButtonItem if let action = barButtonItem.action {