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