|
|
|
@ -24,25 +24,26 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe |
|
|
|
|
|
|
|
private func setupSplitViewController() { |
|
|
|
guard let storyboardSplit = window?.rootViewController as? UISplitViewController else { return } |
|
|
|
let split = installModernSplitViewIfNeeded(storyboardSplit) |
|
|
|
guard let split = modernSplitView(from: storyboardSplit) else { return } |
|
|
|
|
|
|
|
configureSplitViewDisplay(split) |
|
|
|
split.delegate = self |
|
|
|
|
|
|
|
let detailNav = detailNavigationController(in: split) |
|
|
|
let detailNav = split.viewController(for: .secondary) as? UINavigationController |
|
|
|
detailNav?.topViewController?.navigationItem.leftBarButtonItem = nil |
|
|
|
|
|
|
|
guard let masterNav = masterNavigationController(in: split), |
|
|
|
guard let masterNav = split.viewController(for: .primary) as? UINavigationController, |
|
|
|
let controller = masterNav.topViewController as? MasterViewController else { return } |
|
|
|
controller.delegate = NetworkDelegate() |
|
|
|
controller.model.items = LocalManager.sharedInstance.model!.items |
|
|
|
} |
|
|
|
|
|
|
|
private func installModernSplitViewIfNeeded(_ split: UISplitViewController) -> UISplitViewController { |
|
|
|
guard split.style == .unspecified, |
|
|
|
let primary = split.viewControllers.first, |
|
|
|
private func modernSplitView(from split: UISplitViewController) -> UISplitViewController? { |
|
|
|
guard split.style != .doubleColumn else { return split } |
|
|
|
|
|
|
|
guard let primary = split.viewControllers.first, |
|
|
|
let secondary = split.viewControllers.last else { |
|
|
|
return split |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
let modernSplit = UISplitViewController(style: .doubleColumn) |
|
|
|
@ -53,33 +54,23 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe |
|
|
|
} |
|
|
|
|
|
|
|
private func configureSplitViewDisplay(_ split: UISplitViewController) { |
|
|
|
split.minimumPrimaryColumnWidth = 280 |
|
|
|
split.maximumPrimaryColumnWidth = 380 |
|
|
|
split.preferredPrimaryColumnWidthFraction = 0.30 |
|
|
|
|
|
|
|
guard UIDevice.current.userInterfaceIdiom == .pad else { |
|
|
|
split.preferredDisplayMode = .automatic |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
split.preferredSplitBehavior = .tile |
|
|
|
split.preferredDisplayMode = .oneBesideSecondary |
|
|
|
} |
|
|
|
|
|
|
|
private func masterNavigationController(in split: UISplitViewController) -> UINavigationController? { |
|
|
|
if split.style == .doubleColumn { |
|
|
|
return split.viewController(for: .primary) as? UINavigationController |
|
|
|
} |
|
|
|
|
|
|
|
return split.viewControllers.first as? UINavigationController |
|
|
|
} |
|
|
|
split.minimumPrimaryColumnWidth = 220 |
|
|
|
split.maximumPrimaryColumnWidth = 280 |
|
|
|
split.preferredPrimaryColumnWidth = 240 |
|
|
|
|
|
|
|
private func detailNavigationController(in split: UISplitViewController) -> UINavigationController? { |
|
|
|
if split.style == .doubleColumn { |
|
|
|
return split.viewController(for: .secondary) as? UINavigationController |
|
|
|
if #available(iOS 26.0, *) { |
|
|
|
split.minimumSecondaryColumnWidth = 320 |
|
|
|
split.preferredSecondaryColumnWidthFraction = 0.68 |
|
|
|
} |
|
|
|
|
|
|
|
return split.viewControllers.last as? UINavigationController |
|
|
|
split.preferredSplitBehavior = .tile |
|
|
|
split.preferredDisplayMode = .oneBesideSecondary |
|
|
|
split.show(.primary) |
|
|
|
} |
|
|
|
|
|
|
|
// MARK: - Split view |
|
|
|
@ -94,8 +85,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDe |
|
|
|
} |
|
|
|
|
|
|
|
func splitViewController(_ svc: UISplitViewController, displayModeForExpandingToProposedDisplayMode proposedDisplayMode: UISplitViewController.DisplayMode) -> UISplitViewController.DisplayMode { |
|
|
|
configureSplitViewDisplay(svc) |
|
|
|
|
|
|
|
if UIDevice.current.userInterfaceIdiom == .pad { |
|
|
|
return .oneBesideSecondary |
|
|
|
} |
|
|
|
|