小编Vit*_*ero的帖子

更新父视图时,NavigationLink 页面会自动关闭

我正在尝试使用 SwiftUI 和 Firebase 创建一个聊天应用程序。我当前的方法涉及使用聊天室文档,并且每个聊天室中都有一个消息子集合。

因此,我使用两种不同的模型来获取聊天室数据和消息数据。首先,我获取有关聊天室的数据以进行列表视图。一旦用户单击其中一个聊天,就会触发一个 NavigationLink,将他们带到聊天的详细信息,也就是当我获取消息和数据时。

我想做的是跟踪发送的最后一条消息,以便可以从聊天室列表中看到它。目前这是通过从 NavigationLink 内部更新聊天室模型来完成的。由于我对来自 firebase 的数据有一个实时侦听器,因此这会触发父视图的更新,从而重新加载并关闭 NavigationLink。

我期望的行为是即使父视图更新也不要关闭 NavigationLink。

我将非常感谢任何帮助。

父视图

struct ChatListView: View {
var group: Group

@EnvironmentObject var sessionStore: SessionStore
@EnvironmentObject var groupModel: GroupModel

@ObservedObject var chatroomModel = ChatRoomModel()
@State var joinModal = false

init(group: Group) {
    self.group = group
    
    chatroomModel.fetchData(groupID: group.id)
}

var body: some View {
    NavigationView {
        ZStack {
            BackgroundView()
            
            VStack {
                ScrollView {
                    ForEach(chatroomModel.chatrooms) { chatroom in
                        NavigationLink (destination: ChatMessagesView(chatroom: chatroom, chatroomModel: chatroomModel)) {
                    (...)
                    }
                }
                .padding() …
Run Code Online (Sandbox Code Playgroud)

firebase swift google-cloud-firestore swiftui swiftui-navigationlink

5
推荐指数
0
解决办法
1182
查看次数