Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. import UIKit
  2. import AppComponents
  3.  
  4. class ViewController: UIViewController {
  5.  
  6. @IBOutlet private weak var componentContainerView: UIView!
  7.  
  8. @IBOutlet private weak var titleTextField: UITextField!
  9. @IBOutlet private weak var contentTextField: UITextField!
  10. @IBOutlet private weak var favoriteSwitch: UISwitch!
  11. @IBOutlet private weak var loadingSwitch: UISwitch!
  12.  
  13. private var timer = Timer()
  14.  
  15. private lazy var cardComponent: CardComponent = {
  16. let component: CardComponent = UIView.componentFromNib()
  17. component.delegate = self
  18. return component
  19. }()
  20.  
  21. private var componentDTO: CardComponent.DTO {
  22. return .init(title: titleTextField.text ?? "",
  23. content: contentTextField.text ?? "",
  24. isFavorite: favoriteSwitch.isOn)
  25. }
  26.  
  27. override func viewDidLoad() {
  28. super.viewDidLoad()
  29. cardComponent.pinToBounds(of: componentContainerView)
  30. cardComponent.render(.loading(loadingSwitch.isOn))
  31. timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: false, block: { _ in
  32. self.loadingSwitch.isOn = false
  33. self.cardComponent.render(.loading(self.loadingSwitch.isOn))
  34. self.cardComponent.render(.build(self.componentDTO))
  35. })
  36. }
  37.  
  38. @IBAction private func didTapRender() {
  39. cardComponent.render(.build(componentDTO))
  40. }
  41.  
  42. @IBAction private func didSwitchFavorite() {
  43. cardComponent.render(.favorite(favoriteSwitch.isOn))
  44. }
  45.  
  46. @IBAction private func didSwitchLoading() {
  47. cardComponent.render(.loading(loadingSwitch.isOn))
  48. }
  49. }
  50.  
  51. extension ViewController: CardComponentDelegate {
  52.  
  53. func cardComponentDidTapFavoriteButton(_ component: CardComponent) {
  54. favoriteSwitch.isOn = !favoriteSwitch.isOn
  55. component.render(.favorite(favoriteSwitch.isOn))
  56. }
  57. }
  58.  
  59. extension UIView {
  60.  
  61. func pinToBounds(of view: UIView) {
  62. translatesAutoresizingMaskIntoConstraints = false
  63. view.addSubview(self)
  64. NSLayoutConstraint.activate([
  65. leadingAnchor.constraint(equalTo: view.leadingAnchor),
  66. trailingAnchor.constraint(equalTo: view.trailingAnchor),
  67. topAnchor.constraint(equalTo: view.topAnchor),
  68. bottomAnchor.constraint(equalTo: view.bottomAnchor)
  69. ])
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement