mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
使用泛型重构 BaseViewController。
This commit is contained in:
parent
7133530b0e
commit
51ac6c01e4
@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
import Material
|
import Material
|
||||||
import UIKit
|
import UIKit
|
||||||
class BaseViewController: UIViewController {
|
class BaseViewController<T>: UIViewController where T: ViewModel {
|
||||||
let viewModel: ViewModel
|
let viewModel: T
|
||||||
init(viewModel: ViewModel) {
|
init(viewModel: T) {
|
||||||
self.viewModel = viewModel
|
self.viewModel = viewModel
|
||||||
super.init(nibName: nil, bundle: nil)
|
super.init(nibName: nil, bundle: nil)
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import RxDataSources
|
|||||||
import RxSwift
|
import RxSwift
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class GroupFilterViewController: BaseViewController {
|
class GroupFilterViewController: BaseViewController<GroupFilterViewModel> {
|
||||||
let doneButton: BKButton = {
|
let doneButton: BKButton = {
|
||||||
let btn = BKButton()
|
let btn = BKButton()
|
||||||
btn.setTitle(NSLocalizedString("done"), for: .normal)
|
btn.setTitle(NSLocalizedString("done"), for: .normal)
|
||||||
@ -63,10 +63,6 @@ class GroupFilterViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = self.viewModel as? GroupFilterViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let output = viewModel.transform(
|
let output = viewModel.transform(
|
||||||
input: GroupFilterViewModel.Input(
|
input: GroupFilterViewModel.Input(
|
||||||
showAllGroups: self.showAllGroupsButton.rx
|
showAllGroups: self.showAllGroupsButton.rx
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import RxSwift
|
|||||||
import UIKit
|
import UIKit
|
||||||
import UserNotifications
|
import UserNotifications
|
||||||
|
|
||||||
class HomeViewController: BaseViewController {
|
class HomeViewController: BaseViewController<HomeViewModel> {
|
||||||
let newButton: BKButton = {
|
let newButton: BKButton = {
|
||||||
let btn = BKButton()
|
let btn = BKButton()
|
||||||
btn.setImage(Icon.add, for: .normal)
|
btn.setImage(Icon.add, for: .normal)
|
||||||
@ -75,10 +75,6 @@ class HomeViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = self.viewModel as? HomeViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 第一次进入APP 查看通知权限设置
|
// 第一次进入APP 查看通知权限设置
|
||||||
let authorizationStatus = Single<UNAuthorizationStatus>.create { single -> Disposable in
|
let authorizationStatus = Single<UNAuthorizationStatus>.create { single -> Disposable in
|
||||||
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
||||||
|
|||||||
@ -30,7 +30,7 @@ enum MessageDeleteType: Int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MessageListViewController: BaseViewController {
|
class MessageListViewController: BaseViewController<MessageListViewModel> {
|
||||||
let deleteButton: BKButton = {
|
let deleteButton: BKButton = {
|
||||||
let btn = BKButton()
|
let btn = BKButton()
|
||||||
btn.setImage(UIImage(named: "baseline_delete_outline_black_24pt"), for: .normal)
|
btn.setImage(UIImage(named: "baseline_delete_outline_black_24pt"), for: .normal)
|
||||||
@ -96,10 +96,6 @@ class MessageListViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = self.viewModel as? MessageListViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let batchDelete = deleteButton.rx
|
let batchDelete = deleteButton.rx
|
||||||
.tap
|
.tap
|
||||||
.flatMapLatest { _ -> PublishRelay<MessageDeleteType> in
|
.flatMapLatest { _ -> PublishRelay<MessageDeleteType> in
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
import Material
|
import Material
|
||||||
import RxDataSources
|
import RxDataSources
|
||||||
import UIKit
|
import UIKit
|
||||||
class MessageSettingsViewController: BaseViewController {
|
class MessageSettingsViewController: BaseViewController<MessageSettingsViewModel> {
|
||||||
let tableView: UITableView = {
|
let tableView: UITableView = {
|
||||||
let tableView = UITableView()
|
let tableView = UITableView()
|
||||||
tableView.separatorStyle = .none
|
tableView.separatorStyle = .none
|
||||||
@ -34,9 +34,6 @@ class MessageSettingsViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = self.viewModel as? MessageSettingsViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let output = viewModel.transform(
|
let output = viewModel.transform(
|
||||||
input: MessageSettingsViewModel.Input(
|
input: MessageSettingsViewModel.Input(
|
||||||
itemSelected: self.tableView.rx.modelSelected(MessageSettingItem.self).asDriver(),
|
itemSelected: self.tableView.rx.modelSelected(MessageSettingItem.self).asDriver(),
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import SafariServices
|
|||||||
import SnapKit
|
import SnapKit
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class NewServerViewController: BaseViewController {
|
class NewServerViewController: BaseViewController<NewServerViewModel> {
|
||||||
let scanButton: BKButton = {
|
let scanButton: BKButton = {
|
||||||
let button = BKButton()
|
let button = BKButton()
|
||||||
button.setImage(UIImage(named: "baseline_qr_code_scanner_black_24pt"), for: .normal)
|
button.setImage(UIImage(named: "baseline_qr_code_scanner_black_24pt"), for: .normal)
|
||||||
@ -74,9 +74,6 @@ class NewServerViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = self.viewModel as? NewServerViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 点击提醒按钮事件
|
// 点击提醒按钮事件
|
||||||
let noticeTap = noticeLabel.gestureRecognizers!.first!.rx
|
let noticeTap = noticeLabel.gestureRecognizers!.first!.rx
|
||||||
.event
|
.event
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import RxCocoa
|
|||||||
import RxDataSources
|
import RxDataSources
|
||||||
import RxSwift
|
import RxSwift
|
||||||
|
|
||||||
class SoundsViewController: BaseViewController {
|
class SoundsViewController: BaseViewController<SoundsViewModel> {
|
||||||
let tableView: UITableView = {
|
let tableView: UITableView = {
|
||||||
let tableView = UITableView()
|
let tableView = UITableView()
|
||||||
tableView.backgroundColor = BKColor.background.primary
|
tableView.backgroundColor = BKColor.background.primary
|
||||||
@ -42,10 +42,6 @@ class SoundsViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
guard let viewModel = viewModel as? SoundsViewModel else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let output = viewModel.transform(
|
let output = viewModel.transform(
|
||||||
input: SoundsViewModel.Input(soundSelected: self.tableView.rx
|
input: SoundsViewModel.Input(soundSelected: self.tableView.rx
|
||||||
.modelSelected(SoundCellViewModel.self)
|
.modelSelected(SoundCellViewModel.self)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user