mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
70 lines
2.1 KiB
Swift
70 lines
2.1 KiB
Swift
//
|
||
// BarkNavigationController.swift
|
||
// Bark
|
||
//
|
||
// Created by huangfeng on 2018/6/25.
|
||
// Copyright © 2018 Fin. All rights reserved.
|
||
//
|
||
|
||
import Material
|
||
import RxSwift
|
||
import UIKit
|
||
|
||
class BarkNavigationController: UINavigationController {
|
||
override func viewDidLoad() {
|
||
super.viewDidLoad()
|
||
self.navigationBar.prefersLargeTitles = true
|
||
}
|
||
}
|
||
|
||
class BarkSnackbarController: SnackbarController {
|
||
override var childForStatusBarStyle: UIViewController? {
|
||
return self.rootViewController
|
||
}
|
||
}
|
||
|
||
enum TabPage: Int {
|
||
case unknown = -1
|
||
case service = 0
|
||
case messageHistory = 1
|
||
case settings = 2
|
||
}
|
||
|
||
class StateStorageTabBarController: UITabBarController, UITabBarControllerDelegate {
|
||
// 标记当前显示的页面,再次点击相同的页面时当做页面点击事件。
|
||
var currentSelectedIndex: Int = 0
|
||
|
||
// 点击当前页面的 tabBarItem , 可以用以点击刷新当前页面等操作
|
||
lazy var tabBarItemDidClick: Observable<TabPage> = {
|
||
self.rx.didSelect
|
||
.flatMapLatest { _ -> Single<TabPage> in
|
||
let single = Single<TabPage>.create { single in
|
||
if self.currentSelectedIndex == self.selectedIndex {
|
||
single(.success(TabPage(rawValue: self.selectedIndex) ?? .unknown))
|
||
}
|
||
self.currentSelectedIndex = self.selectedIndex
|
||
return Disposables.create()
|
||
}
|
||
return single
|
||
}.share()
|
||
}()
|
||
|
||
var isFirstAppear = true
|
||
override func viewWillAppear(_ animated: Bool) {
|
||
super.viewWillAppear(animated)
|
||
if isFirstAppear {
|
||
isFirstAppear = false
|
||
|
||
// 开启APP时,默认选择上次打开的页面
|
||
if let index: Int = Settings[.selectedViewControllerIndex] {
|
||
self.selectedIndex = index
|
||
self.currentSelectedIndex = index
|
||
}
|
||
// 保存打开的页面Index
|
||
self.rx.didSelect.subscribe(onNext: { _ in
|
||
Settings[.selectedViewControllerIndex] = self.selectedIndex
|
||
}).disposed(by: rx.disposeBag)
|
||
}
|
||
}
|
||
}
|