Как добавить компонент и прочитать его значение [SwiftUI] - PullRequest
0 голосов
/ 17 марта 2020

Я бывший веб-дизайнер, начинающий изучать собственный дизайн приложений с помощью SwiftUI.

У меня проблема: я хочу добавлять компонент в HStack каждый раз, когда нажимаю на выделенную кнопку.

Несколько вопросов:

  • Можно ли сохранить значение в компоненте (представление SwitUI) и прочитать его из другого представления? (Допустим, одно значение компонента равно «4», а второе значение компонента равно «6», я хочу иметь возможность прочитать эти значения для отображения всего «10»)

  • Как добавить компонент в мой HStack, когда я нажму кнопку?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Можно ли сохранить значение в компоненте (представление SwitUI) и прочитать его из другого представления? (Допустим, одно значение компонента равно «4», а второе значение компонента равно «6», я хочу иметь возможность прочитать эти значения для отображения всего «10»)

Смотрите ответы по ссылке ниже. Надеюсь, что это поможет вам начать.

Как получить доступ к переменной в другой структуре? SWIFTUI

Как я могу добавить компонент в мой HStack, когда нажимаю на кнопку?

У вас может быть ForEach, который зацикливает переменную массива карт (как State или ObservableObject) для создания CardView. Присоединение к массиву будет обновлять sh представление. Вот пример кода.

import SwiftUI

class Card: NSObject {
    var id: Int
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }
}

class Model: ObservableObject {
    @Published var cards: [Card] = []

    init() {
        cards = [
            Card(id: 1, name: "Card 1"),
            Card(id: 2, name: "Card 2"),
            Card(id: 3, name: "Card 3")
        ]
    }

}

struct ContentView: View {
    @ObservedObject var model = Model()

    var body: some View {
        NavigationView {
            List {
                ForEach(model.cards, id: \.self) { card in
                    Text("\(card.name)")
                }
                Spacer()
            }
            .padding()
            .navigationBarItems(trailing:
                Button(action: self.addCard) {
                    Image(systemName: "plus")
                }
            )
        }
        .navigationBarTitle("Cards")
    }

    private func addCard() {
        let id = model.cards.count + 1
        model.cards.append(Card(id: id, name: "New Card \(id)"))
    }
}
0 голосов
/ 17 марта 2020

Можно ли сохранить значение в компоненте (представление SwitUI) и прочитать его из другого представления? (Допустим, одно значение компонента равно «4», а второе значение компонента равно «6», я хочу иметь возможность прочитать эти значения для отображения всего «10»)

Вы можете использовать EnvironmentObject или шаблон синглтона, чтобы иметь доступ к переменным из обоих представлений. Другой вариант - передача переменных в качестве аргумента во второе представление

...