在 iOS14 上使用BarkSplitViewController,iOS13使用 UITabBarController

This commit is contained in:
Fin 2024-08-20 15:54:39 +08:00 committed by Feng
parent c412fc7d0f
commit b973ccf3f1
3 changed files with 21 additions and 34 deletions

View File

@ -78,8 +78,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
setupRealm()
IQKeyboardManager.shared.enable = true
if UIDevice.current.userInterfaceIdiom == .pad {
let splitViewController = BarkSplitViewController()
if #available(iOS 14, *), UIDevice.current.userInterfaceIdiom == .pad {
let splitViewController = BarkSplitViewController(style: .doubleColumn)
splitViewController.initViewControllers()
self.window?.rootViewController = BarkSnackbarController(rootViewController: splitViewController)
} else {

View File

@ -9,21 +9,9 @@
import Material
import UIKit
@available(iOS 14, *)
class BarkSplitViewController: UISplitViewController {
override func viewDidLoad() {
super.viewDidLoad()
// oneOverSecondary
// primary
self.preferredDisplayMode = .oneBesideSecondary
self.delegate = self
}
let sectionViewController = BarkNavigationController(
rootViewController: SectionViewController_iPad(viewModel: SectionViewModel())
)
let homeViewController = BarkNavigationController(
rootViewController: HomeViewController(viewModel: HomeViewModel())
)
let sectionViewController = SectionViewController_iPad(viewModel: SectionViewModel())
// Compact snackBarController
let snackBarController: StateStorageTabBarController = {
let tabBarController = StateStorageTabBarController()
@ -47,16 +35,10 @@ class BarkSplitViewController: UISplitViewController {
}()
func initViewControllers() {
self.viewControllers = [sectionViewController, homeViewController]
}
}
extension BarkSplitViewController: UISplitViewControllerDelegate {
func primaryViewController(forExpanding splitViewController: UISplitViewController) -> UIViewController? {
sectionViewController
}
func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController? {
snackBarController
self.setViewController(sectionViewController, for: .primary)
//
let index: Int = Settings[.selectedViewControllerIndex] ?? 0
self.setViewController(sectionViewController.viewControllers[index], for: .secondary)
self.setViewController(snackBarController, for: .compact)
}
}

View File

@ -25,6 +25,14 @@ class SectionViewController_iPad: BaseViewController<SectionViewModel>, UITableV
let messageListController = BarkNavigationController(rootViewController: MessageListViewController(viewModel: MessageListViewModel()))
let settingsController = BarkNavigationController(rootViewController: MessageSettingsViewController(viewModel: MessageSettingsViewModel()))
var viewControllers: [UIViewController] {
[
homeController,
messageListController,
settingsController
]
}
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Bark"
@ -44,14 +52,11 @@ class SectionViewController_iPad: BaseViewController<SectionViewModel>, UITableV
return Observable.just(indexPath)
}
.subscribe { [weak self] indexPath in
guard let self, indexPath.row < 3 else {
guard let self, indexPath.row < self.viewControllers.count else {
return
}
self.splitViewController?.showDetailViewController([
self.homeController,
self.messageListController,
self.settingsController
][indexPath.row], sender: self)
self.splitViewController?.showDetailViewController(self.viewControllers[indexPath.row], sender: self)
Settings[.selectedViewControllerIndex] = indexPath.row
}.disposed(by: rx.disposeBag)
}