In this example parameters are given to View through a single Structure Variable that contains all Variables for the View.
This way View is called with a single parameter (Structure) instead with a multiple parameters (separate Variables) as was
the case in the previous example.
ContentView.swift
//================================================================================
// STRUCTURE: User
//================================================================================
struct User {
var firstName : String
var lastName : String
var imageName : String
}
//================================================================================
// STRUCTURE: ContentView
//================================================================================
struct ContentView: View {
let user = User(firstName: "John", lastName: "Carpenter", imageName: "Person")
var body: some View {
UserDetails(user: user)
}
}
//================================================================================
// CSUTOM VIEW: UserDetails
//================================================================================
struct UserDetails: View {
//PARAMETERS
var user: User
//VIEW LAYOUT
var body: some View {
VStack {
HStack {
VStack(alignment: .leading) {
Text("First Name:").bold().padding(.bottom)
Text("Last Name:").bold()
}
VStack(alignment: .leading) {
Text(user.firstName).padding(.bottom)
Text(user.lastName)
}
}.frame(maxWidth: .infinity, alignment: .topLeading).padding()
Image(user.imageName)
.resizable()
.aspectRatio(contentMode: .fit)
.border(Color.gray, width: 2)
.padding(.leading)
.padding(.trailing)
.frame(maxWidth: .infinity, alignment: .topLeading)
}.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottom)
}
}