import Foundation
class Card: Identifiable, ObservableObject {
var id = UUID()
var result: String = ""
init() {
for _ in 1...10 {
let suit = ["D","K","B","S"][Int(arc4random() % 4]
let numStr = ["1","2","3","4"][Int(arc4random() % 4]
result = suit numStr
}
}
}
import SwiftUI
struct EasyModeView: View {
@ObservedObject var cardModel: Card
var body : some View {
HStack {
ForEach((1...10, id: \.self) { _ in
Button { } label: { Image(cardModel.result) } } }
}
}
我創建了回圈,但它總是向我顯示 10 張相同的卡片,而我想要所有 10 張不同的卡片。我的資產中的影像與兩個變數的組合命名相同,例如“D1”、“D2”、“S1”、“S2”等。
uj5u.com熱心網友回復:
您只使用了一張卡,而不是創建了 10 張。像這樣修復
struct EasyModeView: View {
var body : some View {
HStack {
ForEach(0..<10) { _ in
Button { } label: {
Image(Card().result)
}
}
}
}
}
uj5u.com熱心網友回復:
這是您正在嘗試的正確方法:
struct ContentView: View {
var body: some View {
EasyModeView()
}
}
struct EasyModeView: View {
@StateObject var cardModel: Card = Card()
var body : some View {
HStack {
ForEach(cardModel.results) { card in
Button(action: {}, label: {
Text(card.result)
.padding(3.0)
.background(Color.yellow.cornerRadius(3.0))
})
}
}
Button("re-set") { cardModel.reset() }.padding()
}
}
struct CardType: Identifiable {
let id: UUID = UUID()
var result: String
}
class Card: ObservableObject {
@Published var results: [CardType] = [CardType]()
private let suit: [String] = ["D","K","B","S"]
init() { initializing() }
private func initializing() {
if (results.count > 0) { results.removeAll() }
for _ in 0...9 { results.append(CardType(result: suit.randomElement()! String(describing: Int.random(in: 1...4)))) }
}
func reset() { initializing() }
}
結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340169.html
