diff --git a/.gitignore b/.gitignore index 563ff32..acd19ae 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,7 @@ Carthage/Build # Swift Package Manager .build Package.resolved -.swiftpm \ No newline at end of file +.swiftpm + +# rxtree +.rxtree-version diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 319066d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -# references: -# * https://www.objc.io/issues/6-build-tools/travis-ci/ -# * https://github.com/supermarin/xcpretty#usage - -osx_image: xcode10.2 -language: objective-c -cache: cocoapods -podfile: Example/Podfile - -before_install: -- gem install cocoapods -- pod repo update -- pod install --project-directory=Example - -script: -- set -o pipefail && xcodebuild -workspace Example/RxController.xcworkspace -scheme RxController-Example -sdk iphonesimulator build CODE_SIGNING_REQUIRED=NO | xcpretty -c diff --git a/Example/Podfile.lock b/Example/Podfile.lock index bc5c586..6023a4b 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,15 +1,15 @@ PODS: - Differentiator (4.0.1) - Fakery (4.1.1) - - Reusable (4.1.0): - - Reusable/Storyboard (= 4.1.0) - - Reusable/View (= 4.1.0) - - Reusable/Storyboard (4.1.0) - - Reusable/View (4.1.0) + - Reusable (4.1.1): + - Reusable/Storyboard (= 4.1.1) + - Reusable/View (= 4.1.1) + - Reusable/Storyboard (4.1.1) + - Reusable/View (4.1.1) - RxBinding (0.3.1): - RxCocoa (~> 5) - RxSwift (~> 5) - - RxCocoa (5.0.1): + - RxCocoa (5.1.1): - RxRelay (~> 5) - RxSwift (~> 5) - RxController (0.10): @@ -25,12 +25,12 @@ PODS: - RxCocoa (~> 5) - RxDataSources (~> 4) - RxSwift (~> 5) - - RxFlow (2.7.0): - - RxCocoa (>= 5.0.0) - - RxSwift (>= 5.0.0) - - RxRelay (5.0.1): + - RxFlow (2.8.0): + - RxCocoa (>= 5.1.1) + - RxSwift (>= 5.1.1) + - RxRelay (5.1.1): - RxSwift (~> 5) - - RxSwift (5.0.1) + - RxSwift (5.1.1) - SnapKit (5.0.1) DEPENDENCIES: @@ -61,17 +61,17 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Differentiator: 886080237d9f87f322641dedbc5be257061b0602 Fakery: d3380c4aa1efe7631c0831d7e26aa9db4491f014 - Reusable: 82be188f29d96dc5eff0db7b2393bcc08d2cdd5b + Reusable: 53a9acf5c536f229b31b5865782414b508252ddb RxBinding: 58be2cf1311165489a66eacb4a3e33932d598a53 - RxCocoa: e741b9749968e8a143e2b787f1dfbff2b63d0a5c + RxCocoa: 32065309a38d29b5b0db858819b5bf9ef038b601 RxController: c596ce5b2bc9ab933649690838d60118f0e4b110 RxDataSources: efee07fa4de48477eca0a4611e6d11e2da9c1114 RxDataSourcesSingleSection: 4394e57ae097f33e3845cf3a57bdf7826eca2d38 - RxFlow: 605ef6364d7e937bea8f9507a1e99a431cdc2493 - RxRelay: 89d54507f4fd4d969e6ec1d4bd7f3673640b4640 - RxSwift: e2dc62b366a3adf6a0be44ba9f405efd4c94e0c4 + RxFlow: 41c9d56e7611c6470d00febdfee08b63b0b018f8 + RxRelay: d77f7d771495f43c556cbc43eebd1bb54d01e8e9 + RxSwift: 81470a2074fa8780320ea5fe4102807cb7118178 SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb PODFILE CHECKSUM: 0e048f42166325ac7ea57547d12ebbc2fc47fb5f -COCOAPODS: 1.8.4 +COCOAPODS: 1.9.1 diff --git a/Example/RxController/Controller/Child/FirstNameViewController.swift b/Example/RxController/Controller/Child/FirstNameViewController.swift index 2f09073..0697d44 100644 --- a/Example/RxController/Controller/Child/FirstNameViewController.swift +++ b/Example/RxController/Controller/Child/FirstNameViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 2019/06/03. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct title { @@ -59,22 +61,27 @@ class FirstNameViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .white - - view.addSubview(titleLabel) - view.addSubview(firstNameLabel) - view.addSubview(lastNameLabel) - view.addSubview(updateButton) - createConstraints() - disposeBag ~ [ + view.backgroundColor = .white + } + + override func subviews() -> [UIView] { + return [ + titleLabel, + firstNameLabel, + lastNameLabel, + updateButton + ] + } + + override func bind() -> [Disposable] { + return [ viewModel.firstName ~> firstNameLabel.rx.text, viewModel.lastName ~> lastNameLabel.rx.text ] } - - private func createConstraints() { + override func createConstraints() { titleLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(Const.title.marginLeft) diff --git a/Example/RxController/Controller/Child/FirstNameViewModel.swift b/Example/RxController/Controller/Child/FirstNameViewModel.swift index 896d5af..a72b85b 100644 --- a/Example/RxController/Controller/Child/FirstNameViewModel.swift +++ b/Example/RxController/Controller/Child/FirstNameViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/06/03. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import Fakery diff --git a/Example/RxController/Controller/Child/InfoViewController.swift b/Example/RxController/Controller/Child/InfoViewController.swift index 926cc3f..efa9bf0 100644 --- a/Example/RxController/Controller/Child/InfoViewController.swift +++ b/Example/RxController/Controller/Child/InfoViewController.swift @@ -3,9 +3,11 @@ // RxController // // Created by Meng Li on 04/01/2019. -// Copyright (c) 2019 XFLAG. All rights reserved. +// Copyright (c) 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct nameTitle { @@ -66,24 +68,28 @@ class InfoViewController: BaseViewController { super.viewDidLoad() view.backgroundColor = .white - view.addSubview(nameTitleLabel) - view.addSubview(numberTitleLabel) - view.addSubview(updateButton) - view.addSubview(nameView) - view.addSubview(numberView) - addChild(nameViewController, to: nameView) addChild(numberViewController, to: numberView) - - createConstraints() - - disposeBag ~ [ + } + + override func subviews() -> [UIView] { + return [ + nameTitleLabel, + numberTitleLabel, + updateButton, + nameView, + numberView + ] + } + + override func bind() -> [Disposable] { + return [ viewModel.name ~> nameTitleLabel.rx.text, viewModel.number ~> numberTitleLabel.rx.text ] } - private func createConstraints() { + override func createConstraints() { nameTitleLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(Const.nameTitle.marginLeft) diff --git a/Example/RxController/Controller/Child/InfoViewModel.swift b/Example/RxController/Controller/Child/InfoViewModel.swift index 07a842f..3605480 100644 --- a/Example/RxController/Controller/Child/InfoViewModel.swift +++ b/Example/RxController/Controller/Child/InfoViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/04/09. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxSwift diff --git a/Example/RxController/Controller/Child/LastNameViewController.swift b/Example/RxController/Controller/Child/LastNameViewController.swift index eb86c44..b3cc2e6 100644 --- a/Example/RxController/Controller/Child/LastNameViewController.swift +++ b/Example/RxController/Controller/Child/LastNameViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 2019/06/03. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct title { @@ -59,21 +61,27 @@ class LastNameViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .white - - view.addSubview(titleLabel) - view.addSubview(firstNameLabel) - view.addSubview(lastNameLabel) - view.addSubview(updateButton) - createConstraints() - disposeBag ~ [ + view.backgroundColor = .white + } + + override func subviews() -> [UIView] { + return [ + titleLabel, + firstNameLabel, + lastNameLabel, + updateButton + ] + } + + override func bind() -> [Disposable] { + return [ viewModel.firstName ~> firstNameLabel.rx.text, viewModel.lastName ~> lastNameLabel.rx.text ] } - private func createConstraints() { + override func createConstraints() { titleLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(Const.title.marginLeft) diff --git a/Example/RxController/Controller/Child/LastNameViewModel.swift b/Example/RxController/Controller/Child/LastNameViewModel.swift index 875b372..72c6a10 100644 --- a/Example/RxController/Controller/Child/LastNameViewModel.swift +++ b/Example/RxController/Controller/Child/LastNameViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/06/03. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import Fakery diff --git a/Example/RxController/Controller/Child/NameViewController.swift b/Example/RxController/Controller/Child/NameViewController.swift index 068b15d..7df4570 100644 --- a/Example/RxController/Controller/Child/NameViewController.swift +++ b/Example/RxController/Controller/Child/NameViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 2019/04/16. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct title { static let marginLeft = 10 @@ -78,23 +80,9 @@ class NameViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white - - view.addSubview(titleLabel) - view.addSubview(nameLabel) - view.addSubview(numberLabel) - view.addSubview(updateButton) - view.addSubview(firstNameView) - view.addSubview(lastNameView) addChild(firstNameViewController, to: firstNameView) addChild(lastNameViewController, to: lastNameView) - - createConstraints() - - disposeBag ~ [ - viewModel.name ~> nameLabel.rx.text, - viewModel.number ~> numberLabel.rx.text - ] } override func viewWillAppear(_ animated: Bool) { @@ -102,8 +90,26 @@ class NameViewController: BaseViewController { viewModel.updateName() } + + override func subviews() -> [UIView] { + return [ + titleLabel, + nameLabel, + numberLabel, + updateButton, + firstNameView, + lastNameView + ] + } - private func createConstraints() { + override func bind() -> [Disposable] { + return [ + viewModel.name ~> nameLabel.rx.text, + viewModel.number ~> numberLabel.rx.text + ] + } + + override func createConstraints() { titleLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(Const.title.marginLeft) @@ -135,7 +141,7 @@ class NameViewController: BaseViewController { lastNameView.snp.makeConstraints { $0.height.equalTo(Const.lastName.height) $0.left.right.equalToSuperview() - $0.top.equalTo(firstNameViewController.view.snp.bottom).offset(Const.lastName.marginTop) + $0.top.equalTo(firstNameView.snp.bottom).offset(Const.lastName.marginTop) } } diff --git a/Example/RxController/Controller/Child/NameViewModel.swift b/Example/RxController/Controller/Child/NameViewModel.swift index 95f2e11..e8d4d14 100644 --- a/Example/RxController/Controller/Child/NameViewModel.swift +++ b/Example/RxController/Controller/Child/NameViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/04/16. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import Fakery diff --git a/Example/RxController/Controller/Child/NumberViewController.swift b/Example/RxController/Controller/Child/NumberViewController.swift index 8aca7de..57491cd 100644 --- a/Example/RxController/Controller/Child/NumberViewController.swift +++ b/Example/RxController/Controller/Child/NumberViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 2019/04/16. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct title { @@ -56,15 +58,6 @@ class NumberViewController: BaseViewController { super.viewDidLoad() view.backgroundColor = .white - view.addSubview(titleLabel) - view.addSubview(numberLabel) - view.addSubview(updateButton) - createConstraints() - - disposeBag ~ [ - viewModel.number ~> numberLabel.rx.text - ] - } override func viewWillAppear(_ animated: Bool) { @@ -73,7 +66,21 @@ class NumberViewController: BaseViewController { viewModel.updateNumber() } - private func createConstraints() { + override func subviews() -> [UIView] { + return [ + titleLabel, + numberLabel, + updateButton + ] + } + + override func bind() -> [Disposable] { + return [ + viewModel.number ~> numberLabel.rx.text + ] + } + + override func createConstraints() { titleLabel.snp.makeConstraints { $0.left.equalToSuperview().offset(Const.title.marginLeft) diff --git a/Example/RxController/Controller/Child/NumberViewModel.swift b/Example/RxController/Controller/Child/NumberViewModel.swift index f4b277c..6a14bf9 100644 --- a/Example/RxController/Controller/Child/NumberViewModel.swift +++ b/Example/RxController/Controller/Child/NumberViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/04/16. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import Fakery diff --git a/Example/RxController/Controller/MainViewController.swift b/Example/RxController/Controller/MainViewController.swift index 05a5a31..c20313d 100644 --- a/Example/RxController/Controller/MainViewController.swift +++ b/Example/RxController/Controller/MainViewController.swift @@ -3,10 +3,9 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // - import RxSwift enum MainTabType: Int { diff --git a/Example/RxController/Controller/MainViewModel.swift b/Example/RxController/Controller/MainViewModel.swift index f881df6..b606e66 100644 --- a/Example/RxController/Controller/MainViewModel.swift +++ b/Example/RxController/Controller/MainViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // class MainViewModel: BaseViewModel { diff --git a/Example/RxController/Controller/Recursion/FirendsViewModel.swift b/Example/RxController/Controller/Recursion/FirendsViewModel.swift index 0d28e40..ecb807c 100644 --- a/Example/RxController/Controller/Recursion/FirendsViewModel.swift +++ b/Example/RxController/Controller/Recursion/FirendsViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxCocoa diff --git a/Example/RxController/Controller/Recursion/FriendsViewController.swift b/Example/RxController/Controller/Recursion/FriendsViewController.swift index ad0f7aa..69f196e 100644 --- a/Example/RxController/Controller/Recursion/FriendsViewController.swift +++ b/Example/RxController/Controller/Recursion/FriendsViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + class FriendsViewController: BaseViewController { private lazy var tableView: UITableView = { @@ -22,18 +24,23 @@ class FriendsViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .white - view.addSubview(tableView) - createConstraints() - - disposeBag ~ [ + view.backgroundColor = .white + } + + override func subviews() -> [UIView] { + return [ + tableView + ] + } + + override func bind() -> [Disposable] { + return [ viewModel.title ~> rx.title, viewModel.friendSection ~> tableView.rx.items(dataSource: dataSource) ] - } - private func createConstraints() { + override func createConstraints() { tableView.snp.makeConstraints { $0.left.right.bottom.equalToSuperview() $0.top.equalTo(view.safeAreaInsets.top) diff --git a/Example/RxController/Controller/Recursion/ProfileViewController.swift b/Example/RxController/Controller/Recursion/ProfileViewController.swift index f3db6fe..ade03ef 100644 --- a/Example/RxController/Controller/Recursion/ProfileViewController.swift +++ b/Example/RxController/Controller/Recursion/ProfileViewController.swift @@ -3,9 +3,11 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // +import RxSwift + private struct Const { struct name { @@ -36,16 +38,22 @@ class ProfileViewController: BaseViewController { super.viewDidLoad() view.backgroundColor = .white - view.addSubview(nameLabel) - view.addSubview(friendsButton) - createConstraints() - - disposeBag ~ [ + } + + override func subviews() -> [UIView] { + return [ + nameLabel, + friendsButton + ] + } + + override func bind() -> [Disposable] { + return [ viewModel.name ~> nameLabel.rx.text ] } - private func createConstraints() { + override func createConstraints() { nameLabel.snp.makeConstraints { $0.centerX.equalToSuperview() diff --git a/Example/RxController/Controller/Recursion/ProfileViewModel.swift b/Example/RxController/Controller/Recursion/ProfileViewModel.swift index 8de21ba..c9fc3dd 100644 --- a/Example/RxController/Controller/Recursion/ProfileViewModel.swift +++ b/Example/RxController/Controller/Recursion/ProfileViewModel.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import Fakery diff --git a/Example/RxController/Flow/AppFlow.swift b/Example/RxController/Flow/AppFlow.swift index 58f9b38..171c471 100644 --- a/Example/RxController/Flow/AppFlow.swift +++ b/Example/RxController/Flow/AppFlow.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/04/09. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxFlow @@ -43,66 +43,3 @@ class AppFlow: Flow { } } - - -/** -import UIKit -import RxFlow - -enum AppStep: Step { - case start - case child - case childOnNavigation - case childIsComplete -} - -class AppFlow: Flow { - - var root: Presentable { - return rootWindow - } - - private let rootWindow: UIWindow - - private lazy var navigationController = UINavigationController() - - init(window: UIWindow) { - rootWindow = window - rootWindow.rootViewController = navigationController - } - - func navigate(to step: Step) -> FlowContributors { - guard let appStep = step as? AppStep else { - return .none - } - switch appStep { - case .start: - let menuViewController = MenuViewController(viewModel: .init()) - navigationController.pushViewController(menuViewController, animated: false) - return .viewController(menuViewController) - case .child: - guard let menuViewController = navigationController.topViewController as? MenuViewController else { - return .none - } - let infoViewController = InfoViewController(viewModel: InfoViewModel()) - menuViewController.present(infoViewController, animated: true) - return .viewController(infoViewController) - case .childOnNavigation: - guard let menuViewController = navigationController.topViewController as? MenuViewController else { - return .none - } - let infoViewController = InfoViewController(viewModel: InfoViewModel()) - let navigationController = UINavigationController(rootViewController: infoViewController) - menuViewController.present(navigationController, animated: true) - return .viewController(infoViewController) - case .childIsComplete: - guard let menuViewController = navigationController.topViewController as? MenuViewController else { - return .none - } - menuViewController.presentedViewController?.dismiss(animated: true) - return .none - } - } - -} -*/ diff --git a/Example/RxController/Flow/ChildFlow.swift b/Example/RxController/Flow/ChildFlow.swift index b37de66..f3178c4 100644 --- a/Example/RxController/Flow/ChildFlow.swift +++ b/Example/RxController/Flow/ChildFlow.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxFlow diff --git a/Example/RxController/Flow/FriendsFlow.swift b/Example/RxController/Flow/FriendsFlow.swift index 2e29a65..ae1b6a2 100644 --- a/Example/RxController/Flow/FriendsFlow.swift +++ b/Example/RxController/Flow/FriendsFlow.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/12/5. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxFlow diff --git a/Example/RxController/Flow/MainFlow.swift b/Example/RxController/Flow/MainFlow.swift index 1f1b479..fb5b6f0 100644 --- a/Example/RxController/Flow/MainFlow.swift +++ b/Example/RxController/Flow/MainFlow.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 12/3/19. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxFlow diff --git a/Example/RxController/Flow/ProfileFlow.swift b/Example/RxController/Flow/ProfileFlow.swift index fb8c859..3d21395 100644 --- a/Example/RxController/Flow/ProfileFlow.swift +++ b/Example/RxController/Flow/ProfileFlow.swift @@ -3,7 +3,7 @@ // RxController_Example // // Created by Meng Li on 2019/12/5. -// Copyright © 2019 CocoaPods. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // import RxFlow diff --git a/RxController.podspec b/RxController.podspec index 0e0c0b2..89f7b92 100644 --- a/RxController.podspec +++ b/RxController.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'RxController' - s.version = '0.10' + s.version = '1.0' s.summary = 'A library for developing with MVVM-C based on RxFlow and RxSwift.' # This description is used to generate tags and improve search results. diff --git a/RxController/Classes/Log.swift b/RxController/Classes/Log.swift index fce1813..a95e6ac 100644 --- a/RxController/Classes/Log.swift +++ b/RxController/Classes/Log.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 04/01/2019. -// Copyright (c) 2019 XFLAG. All rights reserved. +// Copyright (c) 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -23,13 +23,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#if DEBUG -import Foundation -#endif - struct Log { - static func debug(_ message: String, tag: String = "", tags:[String] = []) { + static func debug(_ message: String, tag: String = "", tags: [String] = []) { output(tag: tag, tags: tags, message: message) } diff --git a/RxController/Classes/RxControllerEvent.swift b/RxController/Classes/RxControllerEvent.swift index ccab857..1ecee74 100644 --- a/RxController/Classes/RxControllerEvent.swift +++ b/RxController/Classes/RxControllerEvent.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 04/16/2019. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -import Foundation import RxCocoa import RxSwift diff --git a/RxController/Classes/RxControllerEventBinder.swift b/RxController/Classes/RxControllerEventBinder.swift index 584bb4e..fa6b7e4 100644 --- a/RxController/Classes/RxControllerEventBinder.swift +++ b/RxController/Classes/RxControllerEventBinder.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 08/07/2019. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/RxController/Classes/RxControllerEventRouter.swift b/RxController/Classes/RxControllerEventRouter.swift index 78c5aea..53e3d9d 100644 --- a/RxController/Classes/RxControllerEventRouter.swift +++ b/RxController/Classes/RxControllerEventRouter.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 08/06/2019. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/RxController/Classes/RxFlow+Extension.swift b/RxController/Classes/RxFlow+Extension.swift index a04016c..fb2edba 100644 --- a/RxController/Classes/RxFlow+Extension.swift +++ b/RxController/Classes/RxFlow+Extension.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 2019/01/30. -// Copyright © 2019 XFLAG. All rights reserved. +// Copyright © 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -24,7 +24,6 @@ // THE SOFTWARE. import RxFlow -import UIKit extension FlowContributors { diff --git a/RxController/Classes/RxViewController.swift b/RxController/Classes/RxViewController.swift index e528f14..42e360f 100644 --- a/RxController/Classes/RxViewController.swift +++ b/RxController/Classes/RxViewController.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 04/09/2019. -// Copyright (c) 2019 XFLAG. All rights reserved. +// Copyright (c) 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -import UIKit import RxSwift import RxCocoa @@ -54,6 +53,28 @@ open class RxViewController: UIViewController, RxViewCon Log.debug("[DEINIT View Controller] \(type(of: self))") } + open override func viewDidLoad() { + super.viewDidLoad() + + subviews().forEach { view.addSubview($0) } + createConstraints() + bind().forEach { $0.disposed(by: disposeBag) } + } + + open func subviews() -> [UIView] { + Log.debug("[WARNING] \(type(of: self)).subview() has not been overrided") + return [] + } + + open func createConstraints() { + Log.debug("[WARNING] \(type(of: self)).createConstraints() has not been overrided.") + } + + open func bind() -> [Disposable] { + Log.debug("[WARNING] \(type(of: self)).bind() has not been overrided.") + return [] + } + /** Add a child view controller to the root view of the parent view controller. diff --git a/RxController/Classes/RxViewModel.swift b/RxController/Classes/RxViewModel.swift index 1236ebe..9d9cdd7 100644 --- a/RxController/Classes/RxViewModel.swift +++ b/RxController/Classes/RxViewModel.swift @@ -3,7 +3,7 @@ // RxController // // Created by Meng Li on 04/09/2019. -// Copyright (c) 2019 XFLAG. All rights reserved. +// Copyright (c) 2019 MuShare. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -import Foundation import RxSwift import RxCocoa import RxFlow @@ -92,7 +91,7 @@ open class RxViewModel: NSObject, Stepper { public var parentEvents: PublishRelay { guard let events = _parentEvents else { - Log.debug("parentEvents have NOT been prepared in \(type(of: self))!\n use prepareForParentEvents if you subscribed parentEvents.") + Log.debug("[WARNING] parentEvents have NOT been prepared in \(type(of: self))! Override prepareForParentEvents() if you subscribed parentEvents.") return PublishRelay() } return events diff --git a/rxtree/build_for_xcode.sh b/rxtree/build_for_xcode.sh index de6c07e..a026dc7 100755 --- a/rxtree/build_for_xcode.sh +++ b/rxtree/build_for_xcode.sh @@ -2,8 +2,20 @@ ROOT_DIR=$(cd $(dirname $0); pwd) -echo "Building rxtree..." +cd "$ROOT_DIR/../../../" -cd $ROOT_DIR -swift build -cp .build/debug/rxtree "$ROOT_DIR/../../../" \ No newline at end of file +if [ ! -f .rxtree-version ]; then + echo "0.0" > .rxtree-version +fi + +VERSION=$(cat Podfile.lock | grep RxController\ \( | sed -e 's/ - RxController (//g' | sed -e 's/)://g') + +if [ $(cat .rxtree-version) = ${VERSION} ] && [ -f rxtree ]; then + echo "rxtree ${VERSION} existed, skip." +else + echo "Building rxtree $VERSION..." + echo $VERSION > .rxtree-version + cd $ROOT_DIR + swift build + cp .build/debug/rxtree "$ROOT_DIR/../../../" +fi \ No newline at end of file