Skip to content

Instantly share code, notes, and snippets.

var title: String
var titleLabel: UILabel
var title: String {
didSet {
titleLabel.text = title
}
}
let disposeBag = DisposeBag()
let publishSubject = PublishSubject<String>()
//subscribe for changes
publishSubject
.subscribe(onNext: { title in
titleLabel.text = title
})
.disposed(by: disposeBag)
class ProfileManager {
static let shared = ProfileManager()
let usernameObservable: Observable<String>
private let usernameSubject: BehaviorSubject<String>
private var username: String {
didSet {
usernameSubject.onNext(username)
}
RAC(self, titleLabel.text) = RACObserve(self, title);
@objc dynamic var titleKVO: String = ""
var titleObserver: Observable<String> {
return rx.observe(String.self, "titleKVO", options: .new) //using an Rx wrapper for KVO we can monitor new values of
}
let disposeBag = DisposeBag()
titleObserver
.subscribe(onNext: { title in
titleLabel.text = title
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var loginTextField: UITextField?
@IBOutlet weak var passwordTextField: UITextField?
@IBOutlet weak var loginButton: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
loginButton?.isEnabled = false
guard let loginTextField = loginTextField,
let passwordTextField = passwordTextField,
let loginButton = loginButton else {
return
}
class ViewController: UIViewController {
@IBOutlet weak var loginTextField: UITextField?
@IBOutlet weak var passwordTextField: UITextField?
@IBOutlet weak var loginButton: UIButton?
private let disposeBag = DisposeBag()
private let viewModel = ViewModel()
override func viewDidLoad() {
@Published var title: String = ""
//And then you can change the variable itself:
title = "Bob"
//And also to track its changes:
let titleSubscription = $title.sink {
print("new title is '\($0)'")
}