Skip to content

Instantly share code, notes, and snippets.

@Blightwidow
Last active February 23, 2018 14:13
Show Gist options
  • Save Blightwidow/877ba9315a2163de0bd19197a6b459a8 to your computer and use it in GitHub Desktop.
Save Blightwidow/877ba9315a2163de0bd19197a6b459a8 to your computer and use it in GitHub Desktop.
MVVM View
import UIKit
import Foundation
class DateView: UIViewController {
var viewModel: DateViewModel?
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
// MARK: Init
private func setup() {
let view = self
let viewModel = DateViewModel()
view.viewModel = viewModel
}
// MARK: View lifecycle
override func viewDidLoad() {
super.viewDidLoad()
registerInViewModel()
setupView()
}
// MARK: ViewModel setup
private func registerInViewModel() {
viewModel?.updateDate = updateDateClosure
viewModel?.fetchDate()
}
@IBOutlet private weak var dateTextfield: UILabel!
lazy var updateDateClosure: (Date) -> Void = { [weak self] (date) in
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
self?.dateTextfield.text = dateFormatter.string(from: date)
}
// MARK: View setup
private func setupView() {
self?.dateTextfield.text = "Updating..."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment