Skip to content

Commit e3b7b55

Browse files
committed
criando ContactListView
1 parent 365ee1d commit e3b7b55

File tree

6 files changed

+140
-10
lines changed

6 files changed

+140
-10
lines changed

solutions/devsprint-caio-santos-7/FinanceApp.xcodeproj/project.pbxproj

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
25C8174D28F60A0C003127C0 /* ViewCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C8174C28F60A0C003127C0 /* ViewCodable.swift */; };
1313
25C8175528F772FD003127C0 /* AccountSummaryViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C8175428F772FD003127C0 /* AccountSummaryViewTests.swift */; };
1414
65424F8C28F8CF8A00F7E8D4 /* ActivityDetailsViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65424F8B28F8CF8A00F7E8D4 /* ActivityDetailsViewTests.swift */; };
15+
65424F9428F99E8700F7E8D4 /* ContactListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65424F9328F99E8700F7E8D4 /* ContactListView.swift */; };
1516
98584A6D277E32C30028DBEA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584A6C277E32C30028DBEA /* AppDelegate.swift */; };
1617
98584A6F277E32C30028DBEA /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584A6E277E32C30028DBEA /* SceneDelegate.swift */; };
1718
98584A76277E32C50028DBEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 98584A75277E32C50028DBEA /* Assets.xcassets */; };
@@ -27,7 +28,7 @@
2728
98584AF4277E50430028DBEA /* ConfirmationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584AE2277E50430028DBEA /* ConfirmationViewController.swift */; };
2829
98584B10277E605F0028DBEA /* ActivityDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584B0A277E605F0028DBEA /* ActivityDetailsViewController.swift */; };
2930
98584B14277E605F0028DBEA /* ActivityDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584B0E277E605F0028DBEA /* ActivityDetailsView.swift */; };
30-
98584B1F277E60740028DBEA /* ContactListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584B19277E60740028DBEA /* ContactListView.swift */; };
31+
98584B1F277E60740028DBEA /* ContactListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584B19277E60740028DBEA /* ContactListTableViewCell.swift */; };
3132
98584B20277E60740028DBEA /* ContactListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98584B1A277E60740028DBEA /* ContactListViewController.swift */; };
3233
989627E027ADC2F60009A07F /* DebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 989627DF27ADC2F60009A07F /* DebugViewController.swift */; };
3334
98C8A4D927C8152200A630ED /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C8A4D827C8152200A630ED /* String+Extensions.swift */; };
@@ -61,6 +62,7 @@
6162
55C4E25CA63BCFCC105EC051 /* Pods_FinanceApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FinanceApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6263
61A71CDF7B0095F152A3CD4E /* Pods-FinanceApp-FinanceAppUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FinanceApp-FinanceAppUITests.debug.xcconfig"; path = "Target Support Files/Pods-FinanceApp-FinanceAppUITests/Pods-FinanceApp-FinanceAppUITests.debug.xcconfig"; sourceTree = "<group>"; };
6364
65424F8B28F8CF8A00F7E8D4 /* ActivityDetailsViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityDetailsViewTests.swift; sourceTree = "<group>"; };
65+
65424F9328F99E8700F7E8D4 /* ContactListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactListView.swift; sourceTree = "<group>"; };
6466
6989344458FFDBA154C3EC32 /* Pods-FinanceApp-FinanceAppUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FinanceApp-FinanceAppUITests.release.xcconfig"; path = "Target Support Files/Pods-FinanceApp-FinanceAppUITests/Pods-FinanceApp-FinanceAppUITests.release.xcconfig"; sourceTree = "<group>"; };
6567
98584A69277E32C30028DBEA /* FinanceApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FinanceApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
6668
98584A6C277E32C30028DBEA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
@@ -80,7 +82,7 @@
8082
98584AE2277E50430028DBEA /* ConfirmationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfirmationViewController.swift; sourceTree = "<group>"; };
8183
98584B0A277E605F0028DBEA /* ActivityDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityDetailsViewController.swift; sourceTree = "<group>"; };
8284
98584B0E277E605F0028DBEA /* ActivityDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityDetailsView.swift; sourceTree = "<group>"; };
83-
98584B19277E60740028DBEA /* ContactListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListView.swift; sourceTree = "<group>"; };
85+
98584B19277E60740028DBEA /* ContactListTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListTableViewCell.swift; sourceTree = "<group>"; };
8486
98584B1A277E60740028DBEA /* ContactListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListViewController.swift; sourceTree = "<group>"; };
8587
989627DF27ADC2F60009A07F /* DebugViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugViewController.swift; sourceTree = "<group>"; };
8688
98C8A4D827C8152200A630ED /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = "<group>"; };
@@ -161,6 +163,14 @@
161163
path = ActivityDetails;
162164
sourceTree = "<group>";
163165
};
166+
65424F9228F99E6400F7E8D4 /* Cells */ = {
167+
isa = PBXGroup;
168+
children = (
169+
98584B19277E60740028DBEA /* ContactListTableViewCell.swift */,
170+
);
171+
path = Cells;
172+
sourceTree = "<group>";
173+
};
164174
820E387591A4D6261F2D6AF5 /* Frameworks */ = {
165175
isa = PBXGroup;
166176
children = (
@@ -314,8 +324,9 @@
314324
98584B08277E602C0028DBEA /* ContactList */ = {
315325
isa = PBXGroup;
316326
children = (
317-
98584B19277E60740028DBEA /* ContactListView.swift */,
318327
98584B1A277E60740028DBEA /* ContactListViewController.swift */,
328+
65424F9328F99E8700F7E8D4 /* ContactListView.swift */,
329+
65424F9228F99E6400F7E8D4 /* Cells */,
319330
);
320331
path = ContactList;
321332
sourceTree = "<group>";
@@ -505,6 +516,7 @@
505516
buildActionMask = 2147483647;
506517
files = (
507518
25C8174D28F60A0C003127C0 /* ViewCodable.swift in Sources */,
519+
65424F9428F99E8700F7E8D4 /* ContactListView.swift in Sources */,
508520
98584AC3277E42E80028DBEA /* FinanceService.swift in Sources */,
509521
25C8174B28F608BF003127C0 /* AccountSummaryView.swift in Sources */,
510522
98584B10277E605F0028DBEA /* ActivityDetailsViewController.swift in Sources */,
@@ -524,7 +536,7 @@
524536
98584A6D277E32C30028DBEA /* AppDelegate.swift in Sources */,
525537
98584A6F277E32C30028DBEA /* SceneDelegate.swift in Sources */,
526538
98584AA7277E35F10028DBEA /* HomeView.swift in Sources */,
527-
98584B1F277E60740028DBEA /* ContactListView.swift in Sources */,
539+
98584B1F277E60740028DBEA /* ContactListTableViewCell.swift in Sources */,
528540
989627E027ADC2F60009A07F /* DebugViewController.swift in Sources */,
529541
98584AA5277E35E90028DBEA /* HomeViewController.swift in Sources */,
530542
98584AED277E50430028DBEA /* UserProfileView.swift in Sources */,

solutions/devsprint-caio-santos-7/FinanceApp/AppDelegate/SceneDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
1717
guard let windowScene = (scene as? UIWindowScene) else { return }
1818

1919
self.window = UIWindow(frame: UIScreen.main.bounds)
20-
self.window?.rootViewController = UINavigationController(rootViewController: ActivityDetailsViewController())
20+
self.window?.rootViewController = UINavigationController(rootViewController: ContactListViewController())
2121
self.window?.windowScene = windowScene
2222
self.window?.makeKeyAndVisible()
2323
}

solutions/devsprint-caio-santos-7/FinanceApp/Screens/ActivityDetails/ActivityDetailsView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ final class ActivityDetailsView: UIView {
2020
return nil
2121
}
2222

23-
// MARK: Interface Elements
23+
// MARK: Visual Components
2424
private lazy var vStack: UIStackView = {
2525
let stack = UIStackView()
2626
stack.translatesAutoresizingMaskIntoConstraints = false
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
//
2+
// ContactListView.swift
3+
// FinanceApp
4+
//
5+
// Created by Rodrigo Borges on 30/12/21.
6+
//
7+
8+
import UIKit
9+
10+
final class ContactCellView: UITableViewCell {
11+
static let identifier = "ContactCellIdentifier"
12+
13+
//MARK: - Init
14+
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
15+
super.init(style: style, reuseIdentifier: reuseIdentifier)
16+
self.accessoryType = .disclosureIndicator
17+
setupView()
18+
}
19+
20+
required init?(coder: NSCoder) {
21+
return nil
22+
}
23+
24+
//MARK: - Visual Components
25+
lazy var container: UIStackView = {
26+
let element = UIStackView()
27+
element.translatesAutoresizingMaskIntoConstraints = false
28+
element.axis = .horizontal
29+
element.alignment = .center
30+
31+
return element
32+
}()
33+
}
34+
35+
//MARK: - ViewCodable
36+
extension ContactCellView: ViewCodable {
37+
38+
func buildHierarchy() {
39+
addSubview(container)
40+
}
41+
42+
func setupConstraints() {
43+
NSLayoutConstraint.activate([
44+
container.topAnchor.constraint(equalTo: topAnchor),
45+
container.trailingAnchor.constraint(equalTo: trailingAnchor),
46+
container.bottomAnchor.constraint(equalTo: bottomAnchor),
47+
container.leadingAnchor.constraint(equalTo: leadingAnchor),
48+
])
49+
}
50+
}

solutions/devsprint-caio-santos-7/FinanceApp/Screens/ContactList/ContactListView.swift

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,76 @@
22
// ContactListView.swift
33
// FinanceApp
44
//
5-
// Created by Rodrigo Borges on 30/12/21.
5+
// Created by Gabriel de Castro Chaves on 14/10/22.
66
//
77

88
import UIKit
99

10-
class ContactListView: UIView {
10+
final class ContactListView: UIView {
11+
12+
static let cellSize = CGFloat(80)
13+
14+
// MARK: - Viusal Components
15+
lazy var tableView: UITableView = {
16+
let tableView = UITableView(frame: .zero)
17+
tableView.translatesAutoresizingMaskIntoConstraints = false
18+
tableView.register(ContactCellView.self, forCellReuseIdentifier: ContactCellView.identifier)
19+
tableView.dataSource = self
20+
tableView.delegate = self
21+
return tableView
22+
}()
23+
24+
// MARK: - Init
25+
init() {
26+
super.init(frame: .zero)
27+
self.backgroundColor = .white
28+
setupView()
29+
tableView.reloadData()
30+
}
31+
32+
required init?(coder: NSCoder) {
33+
return nil
34+
}
35+
36+
}
37+
38+
// MARK: - ViewCodable
39+
extension ContactListView: ViewCodable {
40+
41+
func buildHierarchy() {
42+
addSubview(tableView)
43+
}
44+
45+
func setupConstraints() {
46+
NSLayoutConstraint.activate([
47+
tableView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor),
48+
tableView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor),
49+
tableView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor),
50+
tableView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor),
51+
])
52+
}
53+
54+
}
1155

56+
// MARK: - TableView
57+
extension ContactListView: UITableViewDataSource, UITableViewDelegate {
58+
59+
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
60+
61+
return 8
62+
}
63+
64+
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
65+
66+
guard let cell = tableView.dequeueReusableCell(withIdentifier: ContactCellView.identifier, for: indexPath) as? ContactCellView else { return UITableViewCell() }
67+
68+
return cell
69+
}
70+
71+
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
72+
return ContactListView.cellSize
73+
}
74+
1275
}
76+
77+

solutions/devsprint-caio-santos-7/FinanceApp/Screens/ContactList/ContactListViewController.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
import UIKit
99

1010
class ContactListViewController: UIViewController {
11-
11+
let container = ContactListView()
12+
1213
override func loadView() {
13-
self.view = ContactListView()
14+
self.view = container
1415
}
1516
}
17+
18+

0 commit comments

Comments
 (0)