我不确定这是否可能。我对SwiftUI开发还是新手。
这就是我想要达到的目标。
我正在使用一个拖放swift包,它允许将一个项目从一个位置拖放到一个特定的位置。
它使用UUID以便从一个位置(保存位置)拖到另一个位置。
然而,我遇到的问题是,如果我只使用一个项目,即文本或图像,它的罚款和相应的运作。
但是,我使用的网格具有多个从数据模型填充的项。
// MARK: - Rune MODEL
struct Rune: Codable, Identifiable, Comparable {
static func < (lhs: Rune, rhs: Rune) -> Bool {
lhs.title < rhs.title
}
let runeid = UUID()
var id: Int
var title: String
var headline: String
var image: String
var pronunciation: String
var sound: String
var aett: String
var god: String
var knownas: [String]
var keywords: [String]
var translation: String
var magick: [String]
var gallery: [String]
var meanings: [String]
var runelore: [String]
var poeticedda: [String]
}
每个项目都有自己的UUID,这非常好用。
在视图中,我遍历了数据模型中从JSON文件填充的每个项,一切都很好。
每个项目都显示在网格中。
LazyVGrid(columns: columns, spacing: 5) {
ForEach(runes) { rune in
RuneFrontView(rune: rune, width: width, height: height, degree: $frontDegree)
RuneBackView(rune: rune, width: width, height: height, degree: $backDegree)
switch rune.id {
case 1:
Text("rune 1")
// runeofday = rune.runeid
case 2:
Text("rune 2")
// runeofday = rune.runeid
case 3:
Text("rune 3")
// runeofday = rune.runeid
case 4:
Text("rune 4")
// runeofday = rune.runeid
case 5:
Text("rune 5")
// runeofday = rune.runeid
case 6:
Text("rune 6")
// runeofday = rune.runeid
default:
Text("rune default")
} //:END OF SWITCH
}.onTapGesture {
flipCard ()
}//: END OF ON TAP
}//: END OF LAZY V GRID
在拖放包,我正在使用它有2个视图,一个下降(接收位置)和拖动(从位置的所有项目在网格中)。
在拖放视图中,它需要一个与被拖到拖放区中的项目相关联的UUID。这也将允许我获得被拖放的内容,以便稍后使用。
DragView(**id: runeofday**) { dragInfo in
Text(dragInfo.isDragging ? "Im being dragged" : "Drag me 1")
.padding()
.background{
Color.mint
} //:END OF BACK GROUND
我已经声明了一个名为runeofday的变量,我需要能够使用UUID更新该变量,该UUID已经根据每个项目的ID分配给该项目。
这意味着我有6个Runes,每个Runes都有一个名为runeid的UUID,我想用rune.runeid UUID值更新runeoftheday变量,并将其提供给拖放区(要求是UUID)。
如果有更好的方法来处理不使用这个包,我很乐意改变逻辑。
我的最终目标是创建一个拖放区,可以将一个项目拖到其中,我可以捕获拖到其中的内容,以填充下游数据。我使用的图像将显示为空白,在将图像拖到拖放区后,他们可以点击该项目,它会将其翻转。
希望这是有道理的。
我尝试了不同的变量类型,但无法设置runeofday变量,然后将其更新为另一个UUID。
1条答案
按热度按时间rbpvctlc1#
实际上,我最终重新构造了代码,并且没有使用case语句,我能够从预先建立的数据模型中传递每个UUID。