SwiftUI-更新@State不会更改视图

时间:2020-11-03 10:21:08

标签: swift swiftui

我是SwiftUI的新手,我想用“快速开发人员访问”按钮(又名“ User1”)创建一个登录屏幕,该屏幕应填写用户和密码字段。

当我单击“ User1”按钮时,@State的{​​{1}}电话和密码变量正确填充了正确的值,但是LoginScreen没有显示更新的值。值。

我还尝试使用CustomLoginField代替@Binding var phone:String,但结果相同。

我知道@State应该是私有的。所以我也想知道编写我的代码的正确方法。

@State

1 个答案:

答案 0 :(得分:1)

您刚刚犯了一个小错误。

在customloginField中,您需要定义inputStr:String作为绑定变量

@Binding var inputStr:String

在使用时,您必须按以下方式使用

CustomLoginField(inputStr:self.$phone, keyboard: .numberPad, placeholder:"PHONE", formatedPhoneNumber:true, maxLength: 10)
CustomLoginField(inputStr:self.$password, keyboard: .numberPad, placeholder: "PASSWORD", isSecure: true, maxLength: 4)

在电话和密码前加上“ $”?

在SO线程下面检查@state与@binding SwiftUI @State vs Binding