3 мин на чтение

Источник : Creating a CardView

Работа в классе:

Введение:

Как структурировать данные?

Для того чтобы, использовать вид заново с новыми параметрами, следует создать структуру, содержащую все необходимые поля.

Выше приведен пример организации данных с типами, необходимый для заполнения каждой карточки.

Начните реализацию данного объекта, требуется сделать это в отдельном файле. Создайте новый файл с названием DailyScrum.swift, в папке UserModule. Для того чтобы создать новый объект, нам надо создать его структуру. Начните со следующего кода:


import SwiftUI

public struct DailyScrum {
    public var title: String
    public var attendees: [String]
    public var lengthInMinutes: Int
    public var color: Color
    
    public init(title:String, attendees:[String], lengthInMinutes:Int, color:Color){
        self.title = title
        self.attendees = attendees
        self.lengthInMinutes = lengthInMinutes
        self.color = color
    }
}

Данный код создает следующие поля:

  1. title, типа String для хранения титула карточки.
  2. attendees, типа [String] это массив строк, в котором хранятся имена участников карточки.
  3. lengthInMinutes, типа Int для хранения длины события, целым числом.
  4. color, типа Color для хранения цвета карточки.

Также нам необходимо создать инициализатор, который будет создавать наш объект, он должен быть public или публичным, чтобы мы имели к нему доступ из кода, расположенного в файле Main.swift.

Далее, в нашем Main.swift должен быть результат с нашего предыдущего урока:


import SwiftUI
import PlaygroundSupport

struct CardView: View {
    let title: String
    let count: String
    let time: String
    let color: Color
    var body: some View {
        VStack(alignment: .leading){
            Text(self.title).font(.headline)
            Spacer()
            HStack{
                Label(self.count,systemImage:"person.3").font(.subheadline)
                Spacer()
                Label(self.time, systemImage:"timer").font(.subheadline)
            }
        }.frame(width: 600, height: 40).padding().background(self.color)
        
    } 
}


PlaygroundPage.current.setLiveView(CardView(title:"параметр1", count: "10", time:"40", color: .red))


Чтобы создать карточку, вам придется инициализировать объект типа [DailyScrums], это будет массив данных, который нам надо будет правильно инициализировать.

Это мы сможем сделать следующим кодом внутри Main.swift:


scrums =   [DailyScrum(title: "Design", attendees: ["Cathy", "Daisy", "Simon", "Jonathan"], lengthInMinutes: 10, color: .red),
            DailyScrum(title: "App Dev", attendees: ["Katie", "Gray", "Euna", "Luis", "Darla"], lengthInMinutes: 5, color: .green),
            DailyScrum(title: "Web Dev", attendees: ["Chella", "Chris", "Christina", "Eden", "Karla", "Lindsey", "Aga", "Chad", "Jenn", "Sarah"], lengthInMinutes: 1, color: .blue)]

Данные из этого объекта, мы будем использовать следующим образом:

!()[https://docs-assets.developer.apple.com/published/7353d6cbe19dbf54a4ba6d83d7df4d5e/600/SUI_020-020-intro~dark@2x.png]

Задание: замените self.title self.count self.length на соответствующие параметры из DailyScrums

В конце вашей работы должно получиться следующее:


struct CardView: View {
    let scrum: DailyScrum
    var body: some View {
        VStack(alignment: .leading){
            Text(scrum.title).font(.headline)
            Spacer()
            HStack{
                Label("\(scrum.attendees.count)",systemImage:"person.3").font(.subheadline)
                Spacer()
                Label("\(scrum.lengthInMinutes)", systemImage:"timer").font(.subheadline)
            }
        }.frame(height: 100).padding().background(scrum.color)
        
    } 
}

Как это все запихнуть в список, спросите у учителя, удачи!