我正在使用以下代码进行otp验证。当状态属性 canSignUp 更新时,已验证的mobileNumber将打印在else块的Text中,但是一旦发生,应用程序崩溃,并且xcode调试器不会显示与崩溃有关的任何信息。
@State var mobileNumber = ""
@State var canSignUp = false
if !canSignUp {
OTPView(onVerified: { mobile in
self.mobileNumber = mobile
self.canSignUp = true
})
} else {
Text(mobileNumber)
}
相同的代码在物理设备上不会在模拟器中产生任何崩溃。我正在使用iPhone 11 Pro Max这是应用程序在物理设备上崩溃时xcode的样子
最佳答案
我不知道为什么,但是问题是使用if-else显示和隐藏视图。当我将视图放置在if-else之外并使用不透明度显示和隐藏它们时,崩溃已得到修复。此外,我将视图放在ZStack内,以便OTPView不会将Text字段下推。这是它的样子。
ZStack(alignment: .top) {
OTPView(onVerified: { mobile in
self.mobileNumber = mobile
self.canSignUp = true
}).opacity(!canSignUp ? 1 : 0)
Text(mobileNumber).opacity(canSignUp ? 1 : 0)
}
虽然我对此解决方案感到满意。我仍然想知道如果用if-else控制视图的可见性,为什么它不起作用
关于ios - 更改状态属性值可更新UI,但应用程序崩溃,而XCode中没有任何错误报告SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63725854/