mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
在 iOS14 上使用BarkSplitViewController,iOS13使用 UITabBarController
This commit is contained in:
parent
c412fc7d0f
commit
b973ccf3f1
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user