Skip to content

Instantly share code, notes, and snippets.

@asutula
asutula / Podfile
Created March 31, 2017 20:54
Podfile with SetSDK
target 'MVVMSetSDK' do
use_frameworks!
# Pods for MVVMSetSDK
pod 'SetSDK'
end
import Foundation
import RxSwift
import Set
private let setClientId = "<your client id>"
private let setClientSecret = "<your client secret>"
enum NavigationStackAction {
case set(viewModels: [Any], animated: Bool)
case push(viewModel: Any, animated: Bool)
import Foundation
import UIKit
import RxSwift
class RootViewController: UINavigationController {
var viewModel: RootViewModel!
private let disposeBag = DisposeBag()
import Foundation
import UIKit
func viewController(forViewModel viewModel: Any) -> UIViewController? {
switch viewModel {
case let viewModel as RootViewModel:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "rootViewController") as? RootViewController
viewController?.viewModel = viewModel
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = viewController(forViewModel: RootViewModel())
import Foundation
import RxSwift
import Set
class LoginViewModel {
enum Event {
case loggedIn(phoneNumber: String)
}
import Foundation
import UIKit
import RxSwift
import RxCocoa
class LoginViewController: UIViewController {
var viewModel: LoginViewModel!
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var button: UIButton!
...
class LoginViewModel {
...
enum Event {
case loggedIn(phoneNumber: String)
}
...
class RootViewModel {
...
func createSetViewModel() -> SetViewModel {
let setViewModel = SetViewModel()
setViewModel.events
.subscribe(onNext: { [weak self] event in
import Foundation
import RxSwift
import Set
import CoreLocation
class SetViewModel {
// The possible events our view controller and view model can trigger
enum Event {
case logOut