Commit 581c3c12159217be6b734dd0f1d032b748730b6f

Authored by Dmitriy Tymofyeyev
1 parent fe3c6550

add content picker delegate

@@ -20,9 +20,8 @@ extension UIColor { @@ -20,9 +20,8 @@ extension UIColor {
20 static let error = UIColor(named: "ErrorTextField") 20 static let error = UIColor(named: "ErrorTextField")
21 } 21 }
22 22
23 - enum GradientBlue {  
24 - static let left = UIColor(named: "Left")  
25 - static let right = UIColor(named: "Right") 23 + enum Background {
  24 + static let lightGrey = UIColor(named: "LightGreyBackground")
26 } 25 }
27 26
28 } 27 }
@@ -31,4 +30,9 @@ extension CGColor { @@ -31,4 +30,9 @@ extension CGColor {
31 static let lightGrey = UIColor(named: "LightGreyBorderColor")?.cgColor 30 static let lightGrey = UIColor(named: "LightGreyBorderColor")?.cgColor
32 static let lightBlue = UIColor(named: "LightBlueBorderColor")?.cgColor 31 static let lightBlue = UIColor(named: "LightBlueBorderColor")?.cgColor
33 } 32 }
  33 +
  34 + enum GradientBlue {
  35 + static let left = UIColor(named: "Left")?.cgColor
  36 + static let right = UIColor(named: "Right")?.cgColor
  37 + }
34 } 38 }
@@ -20,5 +20,21 @@ @@ -20,5 +20,21 @@
20 landmarkType = "7"> 20 landmarkType = "7">
21 </BreakpointContent> 21 </BreakpointContent>
22 </BreakpointProxy> 22 </BreakpointProxy>
  23 + <BreakpointProxy
  24 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  25 + <BreakpointContent
  26 + uuid = "A1E9762E-4F4B-4248-80A0-963D32FF79F7"
  27 + shouldBeEnabled = "Yes"
  28 + ignoreCount = "0"
  29 + continueAfterRunningActions = "No"
  30 + filePath = "InterQR-Internship/Modules/ContactPickerScreen/ViewController/ContactPickerViewController.swift"
  31 + startingColumnNumber = "9223372036854775807"
  32 + endingColumnNumber = "9223372036854775807"
  33 + startingLineNumber = "22"
  34 + endingLineNumber = "22"
  35 + landmarkName = "contactPicker(_:didSelect:)"
  36 + landmarkType = "7">
  37 + </BreakpointContent>
  38 + </BreakpointProxy>
23 </Breakpoints> 39 </Breakpoints>
24 </Bucket> 40 </Bucket>
  1 +{
  2 + "info" : {
  3 + "author" : "xcode",
  4 + "version" : 1
  5 + }
  6 +}
  1 +{
  2 + "colors" : [
  3 + {
  4 + "color" : {
  5 + "color-space" : "srgb",
  6 + "components" : {
  7 + "alpha" : "1.000",
  8 + "blue" : "234",
  9 + "green" : "234",
  10 + "red" : "227"
  11 + }
  12 + },
  13 + "idiom" : "universal"
  14 + },
  15 + {
  16 + "appearances" : [
  17 + {
  18 + "appearance" : "luminosity",
  19 + "value" : "dark"
  20 + }
  21 + ],
  22 + "color" : {
  23 + "color-space" : "srgb",
  24 + "components" : {
  25 + "alpha" : "1.000",
  26 + "blue" : "1.000",
  27 + "green" : "1.000",
  28 + "red" : "1.000"
  29 + }
  30 + },
  31 + "idiom" : "universal"
  32 + }
  33 + ],
  34 + "info" : {
  35 + "author" : "xcode",
  36 + "version" : 1
  37 + }
  38 +}
@@ -54,7 +54,7 @@ class AddResidentsView: UIView { @@ -54,7 +54,7 @@ class AddResidentsView: UIView {
54 54
55 var dividingLineView: UIView = { 55 var dividingLineView: UIView = {
56 var view = UIView() 56 var view = UIView()
57 - view.backgroundColor = .systemGray 57 + view.backgroundColor = .Background.lightGrey
58 return view 58 return view
59 }() 59 }()
60 60
@@ -123,8 +123,9 @@ class AddResidentsView: UIView { @@ -123,8 +123,9 @@ class AddResidentsView: UIView {
123 123
124 var gradientBG: CAGradientLayer = { 124 var gradientBG: CAGradientLayer = {
125 let obj = CAGradientLayer() 125 let obj = CAGradientLayer()
126 - var leftColor = UIColor(red: 0/255, green: 68/255, blue: 139/255, alpha: 1).cgColor  
127 - var rightColor = UIColor(red: 0/255, green: 122/255, blue: 191/255, alpha: 1).cgColor 126 + var leftColor = CGColor.GradientBlue.left
  127 +
  128 + var rightColor = CGColor.GradientBlue.right
128 obj.colors = [leftColor, rightColor] 129 obj.colors = [leftColor, rightColor]
129 obj.startPoint = CGPoint(x: 0, y: 0.5) 130 obj.startPoint = CGPoint(x: 0, y: 0.5)
130 obj.endPoint = CGPoint(x: 1, y: 0.5) 131 obj.endPoint = CGPoint(x: 1, y: 0.5)
@@ -134,7 +135,7 @@ class AddResidentsView: UIView { @@ -134,7 +135,7 @@ class AddResidentsView: UIView {
134 var addResidentButton: UIButton = { 135 var addResidentButton: UIButton = {
135 var obj = UIButton() 136 var obj = UIButton()
136 obj.setTitle("Add resident", for: .normal) 137 obj.setTitle("Add resident", for: .normal)
137 - obj.setTitleColor(UIColor(red: 1, green: 1, blue: 1, alpha: 1), for: .normal) 138 + obj.setTitleColor(.white, for: .normal)
138 obj.titleLabel?.font = .skModernist(type: .bold, ofSize: 16) 139 obj.titleLabel?.font = .skModernist(type: .bold, ofSize: 16)
139 obj.clipsToBounds = true 140 obj.clipsToBounds = true
140 obj.layer.masksToBounds = true 141 obj.layer.masksToBounds = true
@@ -42,7 +42,7 @@ class AddResidentsViewController: UIViewController { @@ -42,7 +42,7 @@ class AddResidentsViewController: UIViewController {
42 mainView.heartButton.addTarget(self, action: #selector(didTapOnChangeableButtons(_:)), for: .touchUpInside) 42 mainView.heartButton.addTarget(self, action: #selector(didTapOnChangeableButtons(_:)), for: .touchUpInside)
43 mainView.addResidentButton.addTarget(self, action: #selector(didTapResidentButton), for: .touchUpInside) 43 mainView.addResidentButton.addTarget(self, action: #selector(didTapResidentButton), for: .touchUpInside)
44 mainView.contactListButton.addTarget(self, action: #selector(didTapContactListButton), for: .touchUpInside) 44 mainView.contactListButton.addTarget(self, action: #selector(didTapContactListButton), for: .touchUpInside)
45 - 45 +
46 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) 46 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
47 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil) 47 NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
48 } 48 }
@@ -69,18 +69,24 @@ class AddResidentsViewController: UIViewController { @@ -69,18 +69,24 @@ class AddResidentsViewController: UIViewController {
69 69
70 func didReceiveData() { 70 func didReceiveData() {
71 guard let name = mainView.nameTextField.text, 71 guard let name = mainView.nameTextField.text,
72 - let mobileNumber = mainView.mobileNumberTextField.text 72 + let mobileNumber = mainView.mobileNumberTextField.text
73 else { 73 else {
74 return 74 return
75 } 75 }
76 -  
77 - let model = ResidentModel(name: name,  
78 - mobileNumber: mobileNumber,  
79 - manager: mainView.managerButton.isSelected,  
80 - hidden: mainView.hiddenButton.isSelected,  
81 - heart: mainView.heartButton.isSelected)  
82 -  
83 - delegate?.save(model) 76 + let model = [ResidentModel(name: name,
  77 + mobileNumber: mobileNumber,
  78 + manager: mainView.managerButton.isSelected,
  79 + hidden: mainView.hiddenButton.isSelected,
  80 + heart: mainView.heartButton.isSelected)]
  81 + savedResidents.append(contentsOf: model)
  82 + delegate?.save(savedResidents)
  83 +// ???????????????????????????????
  84 + mainView.nameTextField.text = "" //???
  85 + mainView.mobileNumberTextField.text = "" //???
  86 + mainView.managerButton.isSelected = false //???
  87 + mainView.hiddenButton.isSelected = false //???
  88 + mainView.heartButton.isSelected = false //???
  89 +// ???????????????????????????????
84 } 90 }
85 91
86 @objc private func didTapOnChangeableButtons(_ sender: SquereCheckbox) { 92 @objc private func didTapOnChangeableButtons(_ sender: SquereCheckbox) {
@@ -114,6 +120,7 @@ class AddResidentsViewController: UIViewController { @@ -114,6 +120,7 @@ class AddResidentsViewController: UIViewController {
114 120
115 func presentContactPickerVC() { 121 func presentContactPickerVC() {
116 let viewController = ContactPickerViewController() 122 let viewController = ContactPickerViewController()
  123 + viewController.delegate = self
117 present(viewController, animated: true) 124 present(viewController, animated: true)
118 } 125 }
119 } 126 }
@@ -150,5 +157,13 @@ extension AddResidentsViewController { @@ -150,5 +157,13 @@ extension AddResidentsViewController {
150 } 157 }
151 } 158 }
152 } 159 }
153 - 160 +//MARK: - Contact picker delegate
  161 +extension AddResidentsViewController: CNContactPickerDelegate {
  162 + func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
  163 + let userPhoneNumbers:[CNLabeledValue<CNPhoneNumber>] = contact.phoneNumbers
  164 + let firstPhoneNumber:CNPhoneNumber = userPhoneNumbers[0].value
  165 +
  166 + mainView.mobileNumberTextField.text = firstPhoneNumber.stringValue
  167 + }
  168 +}
154 169
@@ -13,13 +13,13 @@ class ContactPickerViewController: CNContactPickerViewController { @@ -13,13 +13,13 @@ class ContactPickerViewController: CNContactPickerViewController {
13 var phoneNumber = "" 13 var phoneNumber = ""
14 14
15 override func viewDidLoad() { 15 override func viewDidLoad() {
16 - delegate = self 16 +// delegate = self
17 } 17 }
18 } 18 }
19 //MARK: - Contact picker delegate 19 //MARK: - Contact picker delegate
20 extension ContactPickerViewController: CNContactPickerDelegate { 20 extension ContactPickerViewController: CNContactPickerDelegate {
21 func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) { 21 func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
22 - phoneNumber = "\(contact.familyName)" 22 + phoneNumber = "\(contact.phoneNumbers)"
23 23
24 } 24 }
25 } 25 }
@@ -20,8 +20,8 @@ class ResidentTableViewCell: UITableViewCell { @@ -20,8 +20,8 @@ class ResidentTableViewCell: UITableViewCell {
20 20
21 var serialNumberView: UIImageView = { 21 var serialNumberView: UIImageView = {
22 let obj = UIImageView() 22 let obj = UIImageView()
  23 + obj.clipsToBounds = true
23 obj.layer.cornerRadius = 21.5 24 obj.layer.cornerRadius = 21.5
24 - obj.backgroundColor = .blue  
25 return obj 25 return obj
26 }() 26 }()
27 27
@@ -69,7 +69,7 @@ class ResidentTableViewCell: UITableViewCell { @@ -69,7 +69,7 @@ class ResidentTableViewCell: UITableViewCell {
69 var heartButton: UIButton = { 69 var heartButton: UIButton = {
70 var obj = UIButton() 70 var obj = UIButton()
71 obj.setImage(UIImage(named: "Heart"), for: .normal) 71 obj.setImage(UIImage(named: "Heart"), for: .normal)
72 - obj.setImage(UIImage(named: "RedHeart"), for: .selected) 72 + obj.setImage(UIImage(named: "HeartRed"), for: .selected)
73 return obj 73 return obj
74 }() 74 }()
75 75
@@ -79,6 +79,16 @@ class ResidentTableViewCell: UITableViewCell { @@ -79,6 +79,16 @@ class ResidentTableViewCell: UITableViewCell {
79 return obj 79 return obj
80 }() 80 }()
81 81
  82 + var gradientBG: CAGradientLayer = {
  83 + let obj = CAGradientLayer()
  84 + var leftColor = UIColor(red: 0/255, green: 68/255, blue: 139/255, alpha: 1).cgColor
  85 + var rightColor = UIColor(red: 0/255, green: 122/255, blue: 191/255, alpha: 1).cgColor
  86 + obj.colors = [leftColor, rightColor]
  87 + obj.startPoint = CGPoint(x: 0, y: 0.5)
  88 + obj.endPoint = CGPoint(x: 1, y: 0.5)
  89 + return obj
  90 + }()
  91 +
82 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { 92 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
83 super.init(style: style, reuseIdentifier: reuseIdentifier) 93 super.init(style: style, reuseIdentifier: reuseIdentifier)
84 layout() 94 layout()
@@ -90,6 +100,7 @@ class ResidentTableViewCell: UITableViewCell { @@ -90,6 +100,7 @@ class ResidentTableViewCell: UITableViewCell {
90 100
91 func layout() { 101 func layout() {
92 selectionStyle = .none 102 selectionStyle = .none
  103 + serialNumberView.layer.insertSublayer(gradientBG, at: 0)
93 104
94 contentView.addSubview(containerView) 105 contentView.addSubview(containerView)
95 containerView.addSubview(serialNumberView) 106 containerView.addSubview(serialNumberView)
@@ -150,4 +161,9 @@ class ResidentTableViewCell: UITableViewCell { @@ -150,4 +161,9 @@ class ResidentTableViewCell: UITableViewCell {
150 $0.trailing.equalToSuperview().offset(-22) 161 $0.trailing.equalToSuperview().offset(-22)
151 } 162 }
152 } 163 }
  164 +
  165 + override func layoutSubviews() {
  166 + super.layoutSubviews()
  167 + gradientBG.frame = serialNumberView.bounds
  168 + }
153 } 169 }
@@ -8,9 +8,12 @@ @@ -8,9 +8,12 @@
8 import UIKit 8 import UIKit
9 9
10 class ResidentsViewController: UIViewController { 10 class ResidentsViewController: UIViewController {
11 - var myData: ResidentModel? 11 + var myData: [ResidentModel] = []
  12 +
  13 + let addResidentsVC = AddResidentsViewController()
  14 +
12 var mainView = ResidentsView() 15 var mainView = ResidentsView()
13 - var addResidents = AddResidentsViewController() 16 +
14 override func loadView() { 17 override func loadView() {
15 view = mainView 18 view = mainView
16 } 19 }
@@ -26,9 +29,6 @@ class ResidentsViewController: UIViewController { @@ -26,9 +29,6 @@ class ResidentsViewController: UIViewController {
26 29
27 mainView.backButton.addTarget(self, action: #selector(didShowChooseApartVC), for: .touchUpInside) 30 mainView.backButton.addTarget(self, action: #selector(didShowChooseApartVC), for: .touchUpInside)
28 mainView.addResidentsButton.addTarget(self, action: #selector(willShowAddResidentVC), for: .touchUpInside) 31 mainView.addResidentsButton.addTarget(self, action: #selector(willShowAddResidentVC), for: .touchUpInside)
29 -  
30 - addResidents.delegate = self  
31 - addResidents.didReceiveData()  
32 } 32 }
33 33
34 @objc func didShowChooseApartVC() { 34 @objc func didShowChooseApartVC() {
@@ -36,37 +36,35 @@ class ResidentsViewController: UIViewController { @@ -36,37 +36,35 @@ class ResidentsViewController: UIViewController {
36 } 36 }
37 37
38 @objc func willShowAddResidentVC() { 38 @objc func willShowAddResidentVC() {
39 -// UIView.animate(withDuration: 0.5) {  
40 -// self.mainView.addResidentView.isHidden = false  
41 -// }  
42 - let vc = AddResidentsViewController()  
43 - vc.modalPresentationStyle = .overCurrentContext  
44 - vc.modalTransitionStyle = .crossDissolve  
45 - present(vc, animated: true) 39 + addResidentsVC.modalPresentationStyle = .overCurrentContext
  40 + addResidentsVC.modalTransitionStyle = .crossDissolve
  41 + addResidentsVC.delegate = self
  42 + present(addResidentsVC, animated: true)
46 } 43 }
47 -  
48 } 44 }
49 45
50 //MARK: - TableView delegate & data source 46 //MARK: - TableView delegate & data source
51 extension ResidentsViewController: UITableViewDelegate, UITableViewDataSource { 47 extension ResidentsViewController: UITableViewDelegate, UITableViewDataSource {
52 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 48 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
53 - 10 49 + addResidentsVC.savedResidents.count
54 } 50 }
55 51
56 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 52 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
57 guard let cell = tableView.dequeueReusableCell(withIdentifier: ResidentTableViewCell.id, for: indexPath) as? ResidentTableViewCell else { return UITableViewCell() } 53 guard let cell = tableView.dequeueReusableCell(withIdentifier: ResidentTableViewCell.id, for: indexPath) as? ResidentTableViewCell else { return UITableViewCell() }
58 // cell.configureWithItem(doors[indexPath.row]) 54 // cell.configureWithItem(doors[indexPath.row])
59 cell.serialNumberLabel.text = "\(indexPath.row + 1)" 55 cell.serialNumberLabel.text = "\(indexPath.row + 1)"
60 -// cell.nameLabel.text = myData?.name  
61 -// cell.phoneNumberLabel.text = myData?.mobileNumber 56 + cell.nameLabel.text = myData[indexPath.row].name
  57 + cell.phoneNumberLabel.text = myData[indexPath.row].mobileNumber
  58 + cell.managerButton.isSelected = myData[indexPath.row].manager
  59 + cell.hiddenButton.isSelected = myData[indexPath.row].hidden
  60 + cell.heartButton.isSelected = myData[indexPath.row].heart
62 return cell 61 return cell
63 } 62 }
64 } 63 }
65 //MARK: - Protocol delegate 64 //MARK: - Protocol delegate
66 extension ResidentsViewController: ResidentSavable { 65 extension ResidentsViewController: ResidentSavable {
67 - func save(_ data: ResidentModel) {  
68 -// mainView.residentsLabel.text = data.name  
69 - mainView.residentsLabel.reloadInputViews() 66 + func save(_ data: [ResidentModel]) {
  67 + self.myData = data
70 mainView.tableView.reloadData() 68 mainView.tableView.reloadData()
71 } 69 }
72 } 70 }
@@ -8,5 +8,5 @@ @@ -8,5 +8,5 @@
8 import Foundation 8 import Foundation
9 import ContactsUI 9 import ContactsUI
10 protocol ResidentSavable: AnyObject { 10 protocol ResidentSavable: AnyObject {
11 - func save(_ data: ResidentModel) 11 + func save(_ data: [ResidentModel])
12 } 12 }
Please register or login to post a comment