ios - 更改状态属性值可更新UI,但应用程序崩溃,而XCode中没有任何错误报告SwiftUI

标签 ios swift xcode swiftui

我正在使用以下代码进行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
Error Image
这是应用程序在物理设备上崩溃时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/

相关文章:

ios - xib 加载时的 iPhone 5 迁移大问题

android - 设备位置验证

ios - 数组在枚举时发生了变异 - Swift

ios - UITableview 问题的动态高度

objective-c - Iphone:在单独的文件中编写一些方法以便从任何地方访问

ios - swift 中 java 接口(interface)或 objective c 协议(protocol)的等价物是什么?

swift - 下载 CoreData 的图像

JSON数据: A_Geo: "MULTIPOINT ((121.5831587 24.9971109))" need to be parsed into dictionary

ios - 添加应用程序组功能后清空授权文件

ios - UITextView _firstBaselineOffsetFromTop 断言失败