我想为 NavigationLink 添加一个额外的功能。
示例代码是这样的:
struct ContentView: View {
func yes () {
print("yes")
}
var body: some View {
NavigationView {
NavigationLink(destination: level1()) {
Text("Next")
}}}}
Run Code Online (Sandbox Code Playgroud)
我知道这行不通,但是有可能做这样的事情吗?(它会去目的地并同时调用该函数)
NavigationLink(destination: level1(), yes()) {Text("Next")}
Run Code Online (Sandbox Code Playgroud)
我尝试在 NavigationLink 中放置一个按钮,但它也不起作用。当我这样做时,只有按钮中的功能起作用,而 NavigationLink 不起作用。
NavigationLink(destination: level1()) {
Button(action: { self.yes() })
{ Text("Button")}
}
Run Code Online (Sandbox Code Playgroud) 我想访问其他结构中的变量以获得总计数。
示例代码可以更好地演示:
struct level1: View {
@State var score1 = 5
}
struct level2: View {
@State var score2 = 7
}
Run Code Online (Sandbox Code Playgroud)
在另一个结构中,我希望能够使用 Score1 和 Score2 变量。下面的代码不起作用,但我需要这样的东西。
struct finalScore: View {
@State var totalScore = level1.score1 + level2.score2
}
Run Code Online (Sandbox Code Playgroud) 我想为 NavigationLink 设置一个条件。
我有两个变量,以及如下所示的 NavigationLink。
@State var score = 0
@State var target = 10
NavigationLink(destination: level2()) {
Text("Next Level")
}
Run Code Online (Sandbox Code Playgroud)
如果分数大于目标,有没有办法让用户进入下一个级别?
谢谢。
我正在制作一个采矿点击游戏,我想在用户点击的地方显示一把锤子。
我的意思是,无论用户点击哪里,锤子图像都会停留一秒钟。
有办法做到吗?
我的示例代码如下:
struct Level1: View {
@State var tapScore = 0
@State var showingMinedHammer = false
func showMinedHammer() {
self.showingMinedHammer = true
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.showingMinedHammer = false
}
}
func mine() {
tapScore += 1
showMinedHammer()
}
var body: some View {
GeometryReader { geometryProxy in
ZStack {
Image("mine1").resizable().frame(width: UIScreen.main.bounds.height * 1.4, height: UIScreen.main.bounds.height)
.onTapGesture {
self.mine()
}
if self.showingMinedHammer {
Image(systemName: "hammer.fill")
.resizable()
.frame(width: 30, height: 30)
}
}
}.edgesIgnoringSafeArea(.all)
}
}
Run Code Online (Sandbox Code Playgroud)