From 08f21ca4b287d7d03f288104be4ff2b661fdf44b Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 2 Feb 2025 18:08:13 -0800 Subject: [PATCH] Create RootSplitViewController in code rather than in storyboard. --- NetNewsWire.xcodeproj/project.pbxproj | 1 + iOS/AppDelegate.swift | 7 +---- iOS/MainWindow/RootSplitViewController.swift | 29 +++++++++++++++++++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 2644df027..4e1b97df0 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -291,6 +291,7 @@ 8498E53C2D27A766009F5438 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( + /Localized/MainWindow/Main.storyboard, /Localized/ShareExtension/MainInterface.storyboard, IntentsExtension/Info.plist, IntentsExtension/IntentHandler.swift, diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index 4ec97a189..eb34287c2 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -82,12 +82,7 @@ final class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationC self.window = window // Create UI and add it to window. - let storyboard = UIStoryboard(name: "Main", bundle: nil) - let rootSplitViewController = storyboard.instantiateInitialViewController() as! RootSplitViewController - rootSplitViewController.presentsWithGesture = true - rootSplitViewController.showsSecondaryOnlyButton = true - rootSplitViewController.preferredDisplayMode = .oneBesideSecondary - + let rootSplitViewController = RootSplitViewController() coordinator = SceneCoordinator(rootSplitViewController: rootSplitViewController) rootSplitViewController.coordinator = coordinator rootSplitViewController.delegate = coordinator diff --git a/iOS/MainWindow/RootSplitViewController.swift b/iOS/MainWindow/RootSplitViewController.swift index ffffc3cdd..87ceea10d 100644 --- a/iOS/MainWindow/RootSplitViewController.swift +++ b/iOS/MainWindow/RootSplitViewController.swift @@ -11,8 +11,35 @@ import Account final class RootSplitViewController: UISplitViewController { - var coordinator: SceneCoordinator! + var coordinator: SceneCoordinator! { + didSet { + sidebarViewController.coordinator = coordinator + timelineViewController.coordinator = coordinator + articleViewController.coordinator = coordinator + } + } + private lazy var sidebarViewController = MainFeedViewController() + private lazy var timelineViewController = TimelineViewController() + private lazy var articleViewController = ArticleViewController() + + init() { + super.init(style: .tripleColumn) + + setViewController(self.sidebarViewController, for: .primary) + setViewController(self.timelineViewController, for: .supplementary) + setViewController(self.articleViewController, for: .secondary) + + self.showsSecondaryOnlyButton = true + self.preferredDisplayMode = .oneBesideSecondary + self.preferredSplitBehavior = .displace + self.primaryBackgroundStyle = .sidebar + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override var prefersStatusBarHidden: Bool { return coordinator.prefersStatusBarHidden }