微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI NavigationItem不响应

如何解决SwiftUI NavigationItem不响应

当我单击左箭头时,它应该关闭该视图,但是只有UI会响应,因为单击了该按钮并且未关闭NavigationLink推送的视图...

由另一个NavigationLink在另一个视图中推入的同一视图可以很好地工作,但是当由该NavigationLink推入时,我单击左箭头,则只有20倍的视图关闭了该视图。又是SwiftUI中的错误吗?有解决方法吗?

import SwiftUI
import Firebase
import struct Kingfisher.KFImage

struct SearchView: View {
    @Environment(\.presentationMode) var presentation
    @State var typedSearchValue = ""
    @State var createNewPost = false
    @State var showMessaging = false
    
    @EnvironmentObject var userInfo : UserData
    
    @Binding var switchTab: Int
    
    @State var text : String = ""
    @State var foundUsers: [FetchedUser] = []
    
    @State var showAccount = false
    @State var fetchedUser = FetchedUser()
    
    var body: some View {
        NavigationView {
            ZStack{
                // navigate to that user's profile << the problem navlink
                NavigationLink(destination:
                    UserAccountView(fetchedUser: self.$fetchedUser,showAccount: self.$showAccount)
                        .environmentObject(self.userInfo)
                        .environmentObject(FetchFFFObservable()),isActive: self.$showAccount
                ){
                    EmptyView()
                }.isDetailLink(false)
                
                //...
                NavigationLink(destination:
                    MessagingMainView(showMessaging: self.$showMessaging)
                        .environmentObject(UserData())
                        .environmentObject(MainObservable()),isActive: self.$showMessaging
                ){
                    Text("")
                }
                
                vstack(spacing: 0) {
                    SearchBarMsg(text: $text,foundUsers: $foundUsers)
                        .environmentObject(userInfo)
                        .padding(.horizontal)
                    vstack{
                        if text != ""{
                            
                            List(foundUsers,id: \.username){ user in
                                FetchedUserCellView(user: user)
                                    .environmentObject(self.userInfo)
                                    .onTapGesture {
                                        self.fetchedUser = user
                                        self.showAccount = true
                                }
                            }
                        }else{
                            
                            //....
                        }
                    }
                }
                .navigationBarColor(.titleBarColor)
            }
        }.navigationViewStyle(StackNavigationViewStyle())
        
    }
}

导航到该视图,尽管UI做出响应,但NavigationItems中的按钮不起作用

struct UserAccountView: View {
    @Environment(\.presentationMode) var presentation
    
 //...
    
    @Binding var showAccount : Bool
    

    
    
    
    
    var body: some View {
        vstack {
            //.....
            
        }
            
            .navigationBarColor(.titleBarColor)
            
            .navigationBarTitle(Text(fetchedUser.username),displayMode: .inline)
            .navigationBarItems(leading: Button(action: {
                //this button doesn't work!
                self.showAccount = false
                
            },label: {
                
                Image(systemName: "arrow.left")
                    .resizable()
                    .frame(width: 20,height: 15)
                   
                
            })).accentColor(.white)
        )
        
    }
}


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。