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()
|
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 {
|
||||||
|
|||||||
@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user