ContentView.swift
//
// ContentView.swift
// Test
//
// Created by Cairocoders
//
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List(contacts) { contact in
NavigationLink(destination: DetailView(contact: contact)) {
ContactRow(contact: contact)
}
}
.navigationBarTitle("Contacts")
}
.environment(\.colorScheme, .light)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct ContactRow: View {
let contact: Contact
var body: some View {
HStack {
Image(contact.imageName)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 60, height: 60)
.clipped()
.cornerRadius(50)
VStack(alignment: .leading) {
Text(contact.name)
.font(.system(size: 21, weight: .medium, design: .default))
Text(contact.phone)
}
}
}
}
Contact.swift
//
// Contact.swift
// Test
//
// Created by Cairocoders
//
import Foundation
struct Contact: Identifiable {
let imageName: String
let name: String
let phone: String
let email: String
let office: String
let position: String
let age: String
let startdate: String
let salary: Int
let id = UUID()
}
let contacts = [
Contact(imageName: "photo1", name: "Airi Satou", phone: "+0123-4567896", email: "airisatou@gmail.com", office: "Tokyo", position: "Accountant", age: "25", startdate: "2008/11/28", salary: 89560),
Contact(imageName: "photo2", name: "Angelica Ramos", phone: "+1(698)-1881047", email: "engelicaramos@gmail.com.com", office: "London", position: "Chief Executive Officer (CEO)", age: "45", startdate: "2009/10/09", salary: 58568),
Contact(imageName: "photo3", name: "Ashton Cox", phone: "+1(234)-3442899", email: "astoncox@gmail.com", office: "San Francisco", position: "Junior Technical Author", age: "56",startdate: "2008/11/28", salary: 1560),
Contact(imageName: "photo4", name: "Bradley Greer", phone: "+1(765)-7448466", email: "bradlyfresn@gmail.com", office: "London", position: "Software Engineer", age: "26", startdate: "2008/11/28", salary: 9960),
Contact(imageName: "photo5", name: "Brenden Wagner", phone: "+1(213)-5115553", email: "brdndanwgner@gmail.com", office: "San Francisco", position: "Software Engineer", age: "26", startdate: "2008/11/28", salary: 8860),
Contact(imageName: "photo6", name: "Brielle Williamson", phone: "+1(453)-0663954", email: "brillewilson@gmail.com", office: "New York", position: "Software Engineer", age: "56", startdate: "2008/11/28", salary: 8760)
]
DetailView.swift
//
// DetailView.swift
// Test
//
// Created by Cairocoders
//
import SwiftUI
struct DetailView: View {
let contact: Contact
var body: some View {
VStack {
Image(contact.imageName)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 150, height: 150)
.clipped()
.cornerRadius(150)
.shadow(radius: 3)
Text(contact.name)
.font(.title)
.fontWeight(.medium)
Form {
Section {
HStack {
Text("Phone")
Spacer()
Text(contact.phone)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Email")
Spacer()
Text(contact.email)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Office")
Spacer()
Text(contact.office)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Position")
Spacer()
Text(contact.position)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Age")
Spacer()
Text(contact.age)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Start Date")
Spacer()
Text(contact.startdate)
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
HStack {
Text("Salary")
Spacer()
Text("$\(contact.salary)")
.foregroundColor(.gray)
.font(.callout)
.frame(alignment: .leading)
}
}
Section {
Button(action: {
print("Send a message")
}) {
Text("Send a message")
}
Button(action: {
print("Call")
}) {
Text("Call")
}
}
}
}
.environment(\.colorScheme, .light)
}
}
struct DetailView_Previews: PreviewProvider {
static var previews: some View {
DetailView(contact: contacts[0])
.padding(.top, 60)
}
}
