关闭后,SwiftUI Hosting Controller仍然存在

时间:2020-07-18 20:12:21

标签: swift swiftui swiftui-navigationlink

我在调试器中不断收到错误消息:

2020-07-18 15:59:07.256759-0400 ThePillowApp [22009:7205609]警告:尝试在<< em> TtGC7SwiftUI19UIHostingControllerVVS_22_VariadicView_Children7Element 上显示,其不是:0x106b978e0>在窗口层次结构中!

我的代码的快照:

    ##First View    
    class User: ObservableObject {
            
            @Published var test = false
            
        }
        
        struct RegisterView: View {
            
            @EnvironmentObject var user: User
        
        var body: some View {
                NavigationView{
...
                    HStack{
                        NavigationLink(destination: AccountView().navigationBarTitle("")
                            .navigationBarHidden(true), isActive: self.$user.test) {
                            Text("").foregroundColor(.black).font(Font.custom("DiariaPro-Light", size: 12))}
                        
                        Button(action: {self.user.test=true}) {
                                    Text("Don't have an account?")
                            .font(Font.custom("DiariaPro-Light", size: 12))
                            .foregroundColor(.black)
                        }}}

##Second View
struct AccountView: View {
    @EnvironmentObject var user: User
    @State private var alertMessage = "Error message"
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    
var body: some View {
        NavigationView{
            ...
                        HStack{
                            
                            
Button(action: {
    
    DispatchQueue.main.async {
    self.user.test=false
    self.presentationMode.wrappedValue.dismiss()

    }
}) {
            Text("Already have an account?")
    .font(Font.custom("DiariaPro-Light", size: 12))
    .foregroundColor(.black)
}}

基本上,我想做的是在第一个视图上,如果您没有帐户,则单击按钮,该按钮会将您带到注册页面。在注册页面(#second视图)上,您可以创建一个帐户。我遇到的问题是,在我关闭第二个视图(通过self.user.test = false或self.presentationMode.wrappedValue.dismiss())并返回到第一个视图之后,第二个视图仍在显示本身。

我知道这是因为我在两个视图上都安装了警报,并且当我在第一个视图上触发警报时,关于“平台警报控制器”试图显示在主机控制器上的操作没有错误。在第二个视图上,存在该错误(我想是因为我从第一个视图导航到了第二个视图)。但是,当我从第一个转到第二个然后再回到第一个时,该警告仍然存在,这是关于提示的警告(即使我解雇后也是如此)。

0 个答案:

没有答案