gpt4 book ai didi

SwiftUI - NavigationLink 不适用于按钮

转载 作者:行者123 更新时间:2023-12-05 01:10:42 29 4
gpt4 key购买 nike

我正在制作一个应用程序,我在其中输入两个数字,并希望在单击按钮时在第二个屏幕中显示数字的相加结果。我可以在控制台中打印结果,但不幸的是,按钮周围的导航链接似乎不起作用。如果我将 NavigationLink 放在按钮标签周围而不是整个按钮周围,那么它会转到第二个屏幕但按钮操作停止工作。这是我的代码:

import SwiftUI

struct ContentView: View {
@State private var number1 : String = ""
@State private var number2: String = ""
@State private var isTapped:Bool = false
@State var sum : Double = 0
var body: some View {

NavigationView {
VStack{
TextField("Type first number", text: $number1)
.keyboardType(.numberPad).padding()
.textFieldStyle(RoundedBorderTextFieldStyle())
.background(Color.gray).border(Color.blue,width:5)

TextField("Type second number", text: $number2)
.keyboardType(.numberPad).padding()
.textFieldStyle(RoundedBorderTextFieldStyle())
.background(Color.gray).border(Color.blue,width:5)


//this Navigationlink is not working
NavigationLink(destination: Text("\(self.sum)")) {
Button(action: {
print("I am here in the action")
self.isTapped.toggle()
UIApplication.shared.endEditing()
if let num1 = Double(self.number1), let num2 = Double(self.number2){
print("I am here")
self.sum = num1 + num2
print("\(self.sum)")
}
}) {
//If I put the Navigationlink here, button action stop working.
Text("Add Two Numbers")
.padding()
.foregroundColor(.blue)
.background( isTapped ? Color.orange : Color.gray)
.font(.title)
.border(Color.blue, width: 5)
.shadow(radius: 10)

}

}

}

}

}
}
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

有什么线索吗?感谢您的好奇心。

最佳答案

NavigationLink 实际上是一个按钮,所以你引入了某种冲突。相反,您可以将链接与额外的点击手势处理程序一起使用,例如

NavigationLink(destination: Text("\(self.sum)")) {
Text("Add Two Numbers")
.padding()
.foregroundColor(.blue)
.background(isTapped ? Color.orange : Color.gray)
.font(.title)
.border(Color.blue, width: 5)
.shadow(radius: 10)
}
.simultaneousGesture(TapGesture().onEnded{
print("I am here in the action")
self.isTapped.toggle()
UIApplication.shared.endEditing()
if let num1 = Double(self.number1), let num2 = Double(self.number2){
print("I am here")
self.sum = num1 + num2
print("\(self.sum)")
}
})

关于SwiftUI - NavigationLink 不适用于按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63839821/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com