在 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() setupRealm()
IQKeyboardManager.shared.enable = true IQKeyboardManager.shared.enable = true
if UIDevice.current.userInterfaceIdiom == .pad { if #available(iOS 14, *), UIDevice.current.userInterfaceIdiom == .pad {
let splitViewController = BarkSplitViewController() let splitViewController = BarkSplitViewController(style: .doubleColumn)
splitViewController.initViewControllers() splitViewController.initViewControllers()
self.window?.rootViewController = BarkSnackbarController(rootViewController: splitViewController) self.window?.rootViewController = BarkSnackbarController(rootViewController: splitViewController)
} else { } else {

View File

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

View File

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