Showing
12 changed files
with
136 additions
and
42 deletions
@@ -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> |
InterQR-Internship/Assets.xcassets/UIColors/Background/LightGreyBackground.colorset/Contents.json
0 → 100644
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 | } |
Please
register
or
login
to post a comment