Commit fe3c6550cbad121b2ba296ef094a31541235ae22

Authored by Dmitriy Tymofyeyev
1 parent bd7e697a

Add delegate pattern

Showing 15 changed files with 214 additions and 34 deletions
... ... @@ -27,7 +27,7 @@ extension UIColor {
27 27
28 28 }
29 29 extension CGColor {
30   - enum ButtonBorderColor {
  30 + enum BorderColor {
31 31 static let lightGrey = UIColor(named: "LightGreyBorderColor")?.cgColor
32 32 static let lightBlue = UIColor(named: "LightBlueBorderColor")?.cgColor
33 33 }
... ...
... ... @@ -31,6 +31,7 @@
31 31 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */; };
32 32 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D92850F5F1003F1806 /* SettingsView.swift */; };
33 33 175DA474285241C90075F0A9 /* SettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175DA473285241C90075F0A9 /* SettingsModel.swift */; };
  34 + 1763F7FC2861FFFD005D988C /* ResidentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1763F7FB2861FFFD005D988C /* ResidentTableViewCell.swift */; };
34 35 17ABE070285B80DC0006E7EC /* DisplayNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE06F285B80DC0006E7EC /* DisplayNameCell.swift */; };
35 36 17ABE072285B810F0006E7EC /* SettingsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE071285B810F0006E7EC /* SettingsTableViewCell.swift */; };
36 37 17ABE074285B81390006E7EC /* SettingsSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE073285B81390006E7EC /* SettingsSwitchCell.swift */; };
... ... @@ -75,6 +76,7 @@
75 76 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; };
76 77 1738F7D92850F5F1003F1806 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
77 78 175DA473285241C90075F0A9 /* SettingsModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsModel.swift; sourceTree = "<group>"; };
  79 + 1763F7FB2861FFFD005D988C /* ResidentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResidentTableViewCell.swift; sourceTree = "<group>"; };
78 80 17ABE06F285B80DC0006E7EC /* DisplayNameCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayNameCell.swift; sourceTree = "<group>"; };
79 81 17ABE071285B810F0006E7EC /* SettingsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTableViewCell.swift; sourceTree = "<group>"; };
80 82 17ABE073285B81390006E7EC /* SettingsSwitchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSwitchCell.swift; sourceTree = "<group>"; };
... ... @@ -315,6 +317,14 @@
315 317 path = Cells;
316 318 sourceTree = "<group>";
317 319 };
  320 + 1763F7FA2861FFB0005D988C /* ResidentTableViewCell */ = {
  321 + isa = PBXGroup;
  322 + children = (
  323 + 1763F7FB2861FFFD005D988C /* ResidentTableViewCell.swift */,
  324 + );
  325 + path = ResidentTableViewCell;
  326 + sourceTree = "<group>";
  327 + };
318 328 17ABFE54284FD1C8003B6959 /* HomeScreen */ = {
319 329 isa = PBXGroup;
320 330 children = (
... ... @@ -335,8 +345,8 @@
335 345 17ABFE56284FD1F5003B6959 /* VIew */ = {
336 346 isa = PBXGroup;
337 347 children = (
338   - 00A48B6F285F8E8200EF0A08 /* Cell */,
339 348 17ABFE59284FD293003B6959 /* HomeView.swift */,
  349 + 00A48B6F285F8E8200EF0A08 /* Cell */,
340 350 );
341 351 path = VIew;
342 352 sourceTree = "<group>";
... ... @@ -396,6 +406,7 @@
396 406 isa = PBXGroup;
397 407 children = (
398 408 17CD09AB2858F9B0008483E2 /* ResidentsView.swift */,
  409 + 1763F7FA2861FFB0005D988C /* ResidentTableViewCell */,
399 410 );
400 411 path = View;
401 412 sourceTree = "<group>";
... ... @@ -609,6 +620,7 @@
609 620 00A48B6C285F8CEA00EF0A08 /* AddResidentsViewController.swift in Sources */,
610 621 175DA474285241C90075F0A9 /* SettingsModel.swift in Sources */,
611 622 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */,
  623 + 1763F7FC2861FFFD005D988C /* ResidentTableViewCell.swift in Sources */,
612 624 00A48B62285F8CDD00EF0A08 /* CodeVerificationView.swift in Sources */,
613 625 17CD09A42858EE39008483E2 /* ChooseApartmentsTableViewCell.swift in Sources */,
614 626 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */,
... ...
... ... @@ -14,7 +14,7 @@ class SquereCheckbox: UIButton {
14 14
15 15 private let checkBoxLabel: UILabel = {
16 16 let obj = UILabel()
17   - obj.font = .skModernist(type: .regular, ofSize: 14)
  17 + obj.font = .skModernist(type: .regular, ofSize: 12)
18 18 return obj
19 19 }()
20 20
... ...
... ... @@ -47,7 +47,7 @@ class AddResidentsView: UIView {
47 47 var obj = UIButton()
48 48 obj.layer.cornerRadius = 13
49 49 obj.layer.borderWidth = 1
50   - obj.layer.borderColor = .ButtonBorderColor.lightGrey
  50 + obj.layer.borderColor = .BorderColor.lightGrey
51 51 obj.setImage(UIImage(named: "Close"), for: .normal)
52 52 return obj
53 53 }()
... ...
... ... @@ -9,8 +9,6 @@ import UIKit
9 9 import ContactsUI
10 10
11 11 class AddResidentsViewController: UIViewController {
12   -// var myData: ResidentModel?
13   -
14 12 var savedResidents: [ResidentModel] = []
15 13
16 14 weak var delegate: ResidentSavable?
... ... @@ -54,11 +52,6 @@ class AddResidentsViewController: UIViewController {
54 52 NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
55 53 }
56 54
57   - @objc private func gestureFired() {
58   - print("❌")
59   -
60   - }
61   -
62 55 func reloadView() {
63 56 mainView.mobileNumberTextField.reloadInputViews()
64 57 }
... ...
... ... @@ -8,7 +8,7 @@
8 8 import UIKit
9 9
10 10 class ChooseApartmentsTableViewCell: UITableViewCell {
11   - static let id = "ChooseApartmentsTableViewCell-ID"
  11 + static let id = String(describing: ChooseApartmentsTableViewCell.self)
12 12
13 13 var apartmanImage: UIImageView = {
14 14 var obj = UIImageView()
... ...
... ... @@ -14,7 +14,7 @@ class HomeTableViewCell: UITableViewCell {
14 14 var obj = UIView()
15 15 obj.layer.cornerRadius = 15
16 16 obj.layer.borderWidth = 1
17   - obj.layer.borderColor = UIColor(red: 0.89, green: 0.918, blue: 0.918, alpha: 1).cgColor
  17 + obj.layer.borderColor = .BorderColor.lightGrey
18 18 return obj
19 19 }()
20 20
... ... @@ -28,14 +28,14 @@ class HomeTableViewCell: UITableViewCell {
28 28 var doorNameLabel: UILabel = {
29 29 var obj = UILabel()
30 30 obj.font = .skModernist(type: .bold, ofSize: 16)
31   - obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1)
  31 + obj.textColor = .TextColor.darkBlue
32 32 obj.text = "Front Door"
33 33 return obj
34 34 }()
35 35
36 36 var doorLocationLabel: UILabel = {
37 37 var obj = UILabel()
38   - obj.textColor = UIColor(red: 0.725, green: 0.725, blue: 0.725, alpha: 1)
  38 + obj.textColor = .TextColor.lightGrey
39 39 obj.font = .skModernist(type: .regular, ofSize: 14)
40 40 obj.text = "Home"
41 41 return obj
... ...
... ... @@ -20,10 +20,10 @@ class HomeViewController: UIViewController {
20 20 }
21 21
22 22 private func initViewController() {
23   - mainView.settingsButton.addTarget(self, action: #selector(didShowSettingsVC), for: .touchUpInside)
24 23 mainView.tableView.delegate = self
25 24 mainView.tableView.dataSource = self
26 25 mainView.tableView.register(HomeTableViewCell.self, forCellReuseIdentifier: HomeTableViewCell.id)
  26 + mainView.settingsButton.addTarget(self, action: #selector(didShowSettingsVC), for: .touchUpInside)
27 27 }
28 28 }
29 29
... ...
  1 +//
  2 +// ResidentTableViewCell.swift
  3 +// InterQR-Internship
  4 +//
  5 +// Created by Дмитрий Тимофеев on 21.06.2022.
  6 +//
  7 +
  8 +import UIKit
  9 +
  10 +class ResidentTableViewCell: UITableViewCell {
  11 + static let id = String(describing: ResidentTableViewCell.self)
  12 +
  13 + var containerView: UIView = {
  14 + var obj = UIView()
  15 + obj.layer.cornerRadius = 15
  16 + obj.layer.borderWidth = 1
  17 + obj.layer.borderColor = .BorderColor.lightGrey
  18 + return obj
  19 + }()
  20 +
  21 + var serialNumberView: UIImageView = {
  22 + let obj = UIImageView()
  23 + obj.layer.cornerRadius = 21.5
  24 + obj.backgroundColor = .blue
  25 + return obj
  26 + }()
  27 +
  28 + var serialNumberLabel: UILabel = {
  29 + let obj = UILabel()
  30 + obj.font = .skModernist(type: .bold, ofSize: 14)
  31 + obj.textColor = .white
  32 + return obj
  33 + }()
  34 +
  35 + var nameLabel: UILabel = {
  36 + var obj = UILabel()
  37 + obj.textColor = .TextColor.darkBlue
  38 + obj.font = .skModernist(type: .bold, ofSize: 16)
  39 + obj.text = "John Doe"
  40 + return obj
  41 + }()
  42 +
  43 + var phoneNumberLabel: UILabel = {
  44 + var obj = UILabel()
  45 + obj.textColor = .TextColor.lightGrey
  46 + obj.font = .skModernist(type: .regular, ofSize: 14)
  47 + obj.text = "+38095"
  48 + return obj
  49 + }()
  50 +
  51 + var managerButton: SquereCheckbox = {
  52 + var obj = SquereCheckbox()
  53 + obj.checkboxTitle = "Manager"
  54 + obj.setTitleColor(.TextColor.lightGrey, for: .normal)
  55 + obj.setTitleColor(.TextColor.darkBlue, for: .selected)
  56 + obj.isSelected = false
  57 + return obj
  58 + }()
  59 +
  60 + var hiddenButton: SquereCheckbox = {
  61 + var obj = SquereCheckbox()
  62 + obj.checkboxTitle = "Hidden"
  63 + obj.setTitleColor(.TextColor.lightGrey, for: .normal)
  64 + obj.setTitleColor(.TextColor.darkBlue, for: .selected)
  65 + obj.isSelected = false
  66 + return obj
  67 + }()
  68 +
  69 + var heartButton: UIButton = {
  70 + var obj = UIButton()
  71 + obj.setImage(UIImage(named: "Heart"), for: .normal)
  72 + obj.setImage(UIImage(named: "RedHeart"), for: .selected)
  73 + return obj
  74 + }()
  75 +
  76 + var removeCellButton: UIButton = {
  77 + var obj = UIButton()
  78 + obj.setImage(UIImage(named: "Bin"), for: .normal)
  79 + return obj
  80 + }()
  81 +
  82 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  83 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  84 + layout()
  85 + }
  86 +
  87 + required init?(coder: NSCoder) {
  88 + fatalError("init(coder:) has not been implemented")
  89 + }
  90 +
  91 + func layout() {
  92 + selectionStyle = .none
  93 +
  94 + contentView.addSubview(containerView)
  95 + containerView.addSubview(serialNumberView)
  96 + serialNumberView.addSubview(serialNumberLabel)
  97 +
  98 + containerView.addSubview(nameLabel)
  99 + containerView.addSubview(phoneNumberLabel)
  100 + containerView.addSubview(managerButton)
  101 + containerView.addSubview(hiddenButton)
  102 + containerView.addSubview(heartButton)
  103 + containerView.addSubview(removeCellButton)
  104 +
  105 + containerView.snp.makeConstraints {
  106 + $0.leading.trailing.equalToSuperview().inset(25)
  107 + $0.bottom.top.equalToSuperview().inset(8)
  108 + }
  109 +
  110 + serialNumberView.snp.makeConstraints {
  111 + $0.height.width.equalTo(41)
  112 + $0.leading.equalToSuperview().offset(23)
  113 + $0.top.equalToSuperview().offset(19)
  114 + }
  115 +
  116 + serialNumberLabel.snp.makeConstraints {
  117 + $0.centerX.centerY.equalToSuperview()
  118 + }
  119 +
  120 + nameLabel.snp.makeConstraints {
  121 + $0.leading.equalTo(serialNumberView.snp.trailing).offset(18)
  122 + $0.top.equalToSuperview().offset(22)
  123 + }
  124 +
  125 + removeCellButton.snp.makeConstraints {
  126 + $0.centerY.equalTo(nameLabel.snp.centerY)
  127 + $0.trailing.equalToSuperview().offset(-22.5)
  128 + }
  129 +
  130 + phoneNumberLabel.snp.makeConstraints {
  131 + $0.leading.equalTo(nameLabel.snp.leading)
  132 + $0.top.equalTo(nameLabel.snp.bottom).offset(1)
  133 + }
  134 +
  135 + managerButton.snp.makeConstraints {
  136 + $0.top.equalTo(phoneNumberLabel.snp.bottom).offset(30)
  137 + $0.leading.equalToSuperview().offset(24)
  138 + $0.height.equalTo(20)
  139 + }
  140 +
  141 + hiddenButton.snp.makeConstraints {
  142 + $0.leading.equalTo(managerButton.snp.trailing).offset(23)
  143 + $0.centerY.equalTo(managerButton)
  144 + $0.height.equalTo(20)
  145 + }
  146 +
  147 + heartButton.snp.makeConstraints {
  148 + $0.centerY.equalTo(hiddenButton)
  149 + $0.bottom.equalToSuperview().offset(-18)
  150 + $0.trailing.equalToSuperview().offset(-22)
  151 + }
  152 + }
  153 +}
... ...
... ... @@ -13,7 +13,7 @@ class ResidentsView: UIView {
13 13 var obj = UIButton()
14 14 obj.setImage(UIImage(named: "BackPointer"), for: .normal)
15 15 obj.backgroundColor = .white
16   - obj.layer.borderColor = UIColor(red: 224/255, green: 231/255, blue: 232/255, alpha: 1).cgColor
  16 + obj.layer.borderColor = .BorderColor.lightGrey
17 17 obj.layer.cornerRadius = 13
18 18 obj.layer.borderWidth = 1
19 19 return obj
... ... @@ -56,9 +56,9 @@ class ResidentsView: UIView {
56 56
57 57 let tableView: UITableView = {
58 58 let obj = UITableView()
59   - obj.allowsSelection = false
60 59 obj.showsVerticalScrollIndicator = false
61 60 obj.separatorStyle = .none
  61 + obj.rowHeight = UITableView.automaticDimension
62 62 return obj
63 63 }()
64 64
... ... @@ -68,7 +68,6 @@ class ResidentsView: UIView {
68 68 return obj
69 69 }()
70 70
71   -
72 71 override init(frame: CGRect) {
73 72 super.init(frame: frame)
74 73 backgroundColor = .white
... ...
... ... @@ -8,16 +8,27 @@
8 8 import UIKit
9 9
10 10 class ResidentsViewController: UIViewController {
11   -
  11 + var myData: ResidentModel?
12 12 var mainView = ResidentsView()
13   -
  13 + var addResidents = AddResidentsViewController()
14 14 override func loadView() {
15 15 view = mainView
16 16 }
17 17
18 18 override func viewDidLoad() {
  19 + initViewController()
  20 + }
  21 +
  22 + func initViewController() {
  23 + mainView.tableView.delegate = self
  24 + mainView.tableView.dataSource = self
  25 + mainView.tableView.register(ResidentTableViewCell.self, forCellReuseIdentifier: ResidentTableViewCell.id)
  26 +
19 27 mainView.backButton.addTarget(self, action: #selector(didShowChooseApartVC), for: .touchUpInside)
20 28 mainView.addResidentsButton.addTarget(self, action: #selector(willShowAddResidentVC), for: .touchUpInside)
  29 +
  30 + addResidents.delegate = self
  31 + addResidents.didReceiveData()
21 32 }
22 33
23 34 @objc func didShowChooseApartVC() {
... ... @@ -33,4 +44,29 @@ class ResidentsViewController: UIViewController {
33 44 vc.modalTransitionStyle = .crossDissolve
34 45 present(vc, animated: true)
35 46 }
  47 +
  48 +}
  49 +
  50 +//MARK: - TableView delegate & data source
  51 +extension ResidentsViewController: UITableViewDelegate, UITableViewDataSource {
  52 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  53 + 10
  54 + }
  55 +
  56 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  57 + guard let cell = tableView.dequeueReusableCell(withIdentifier: ResidentTableViewCell.id, for: indexPath) as? ResidentTableViewCell else { return UITableViewCell() }
  58 +// cell.configureWithItem(doors[indexPath.row])
  59 + cell.serialNumberLabel.text = "\(indexPath.row + 1)"
  60 +// cell.nameLabel.text = myData?.name
  61 +// cell.phoneNumberLabel.text = myData?.mobileNumber
  62 + return cell
  63 + }
  64 +}
  65 +//MARK: - Protocol delegate
  66 +extension ResidentsViewController: ResidentSavable {
  67 + func save(_ data: ResidentModel) {
  68 +// mainView.residentsLabel.text = data.name
  69 + mainView.residentsLabel.reloadInputViews()
  70 + mainView.tableView.reloadData()
  71 + }
36 72 }
... ...
... ... @@ -46,25 +46,12 @@ class VerificationView: UIView {
46 46 var button = Checkbox()
47 47 button.checkboxTitle = "Email"
48 48 button.isSelected = true
49   -// button.setTitle("Email", for: .normal)
50   -// button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal)
51   -// button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled)
52   -// button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5)
53   -// button.setImage(UIImage(named: "OnIndicator"), for: .normal)
54   -// button.setImage(UIImage(named: "OffIndicator"), for: .selected)
55   -// button.contentMode = .left
56 49 return button
57 50 }()
58 51
59 52 var phoneNumberButton: Checkbox = {
60 53 var button = Checkbox()
61 54 button.checkboxTitle = "Phone Number"
62   -// button.setTitle("Phone Number", for: .normal)
63   -// button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal)
64   -// button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled)
65   -// button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5)
66   -// button.setImage(UIImage(named: "OnIndicator"), for: .selected)
67   -// button.setImage(UIImage(named: "OffIndicator"), for: .normal)
68 55 return button
69 56 }()
70 57
... ...
Please register or login to post a comment