如何在导航链接期间更改变量的值?
我有一个定义为
的变量@State var numberChange: Int
并且我希望在用户按下按钮时进行更改,即使该按钮已附加导航链接,也带有
NavigationLink(destination: destinationView(numberChange: self.numberChange)) {
imageLink(imageName: "imageName")
}.buttonStyle(PlainButtonStyle())
如果我尝试
destinationView(numberChange: self.numberChange = 4)
Xcode抛出
无法将类型'()'的值转换为预期的参数类型'Int?'
我只编程了几个月,而我在Swift中工作了不到一个星期,所以如果这是一个基本问题,我感到抱歉。
预先感谢
英里
答案 0 :(得分:0)
首先,您应该将整数传递给函数(而不是操作):
destinationView(numberChange: self.numberChange)
或
destinationView(numberChange: 4)
这是错误的原因。
第二,您必须不从视图外部更改State
属性。解决此问题的一种好方法是将所有State
属性声明为private var
。
第三,您可以使用.onAppear()
:
.onAppear {
self.text = "Goodbye world"
}
只要要显示视图,就会调用此方法。您可以根据需要记住该值,将其传递给下一个视图,只要值更改(而不是等待导航),就可以使用binding
机制更改UI。