使用泛型重构 BaseViewController。

This commit is contained in:
Fin 2022-03-25 14:57:18 +08:00
parent 7133530b0e
commit 51ac6c01e4
7 changed files with 9 additions and 31 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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(),

View File

@ -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

View File

@ -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)