From 648ff72ab83bb2b131e1b8f4bb2f73f3678cf9ba Mon Sep 17 00:00:00 2001 From: Fin Date: Mon, 2 Sep 2024 16:19:07 +0800 Subject: [PATCH] =?UTF-8?q?=20=20=20=20=E5=90=8C=E6=AD=A5=20sectionViewCon?= =?UTF-8?q?troller=20=E5=92=8C=20compactController=20=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bark/AppDelegate.swift | 1 - Controller/BarkSplitViewController.swift | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Bark/AppDelegate.swift b/Bark/AppDelegate.swift index 7e441f7..31fad6c 100644 --- a/Bark/AppDelegate.swift +++ b/Bark/AppDelegate.swift @@ -79,7 +79,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD IQKeyboardManager.shared.enable = true if #available(iOS 14, *), UIDevice.current.userInterfaceIdiom == .pad { let splitViewController = BarkSplitViewController(style: .doubleColumn) - splitViewController.initViewControllers() self.window?.rootViewController = BarkSnackbarController(rootViewController: splitViewController) } else { let tabBarController = BarkTabBarController() diff --git a/Controller/BarkSplitViewController.swift b/Controller/BarkSplitViewController.swift index 9dac862..28581a5 100644 --- a/Controller/BarkSplitViewController.swift +++ b/Controller/BarkSplitViewController.swift @@ -18,6 +18,8 @@ class BarkSplitViewController: UISplitViewController { super.viewDidLoad() self.preferredDisplayMode = .oneBesideSecondary self.preferredSplitBehavior = .tile + self.delegate = self + initViewControllers() } func initViewControllers() { @@ -28,3 +30,21 @@ class BarkSplitViewController: UISplitViewController { self.setViewController(compactController, for: .compact) } } + +@available(iOS 14, *) +extension BarkSplitViewController: UISplitViewControllerDelegate { + // 同步 sectionViewController 和 compactController 当前显示页面 + func splitViewControllerDidCollapse(_ svc: UISplitViewController) { + guard let index: Int = Settings[.selectedViewControllerIndex] else { + return + } + self.compactController.selectedIndex = index + } + + func splitViewControllerDidExpand(_ svc: UISplitViewController) { + guard let index: Int = Settings[.selectedViewControllerIndex] else { + return + } + self.sectionViewController.tableView.selectRow(at: IndexPath(row: index, section: 0), animated: false, scrollPosition: .none) + } +}