首页 > 解决方案 > 从详细信息视图导航到列表视图需要双击

问题描述

在列表视图中,显示了消息详细信息视图。

NavigationView() {
        List(msgData) { msg in
            NavigationLink(destination: MessageDetailsView(msgDetails :msg )) {
                        VStack(alignment: .leading, spacing: 5)
                        {
                            Text(msg.name).font(.system(size: 16)).fontWeight(.semibold).foregroundColor(.black)

                        }
            }
        }
        .navigationBarTitle(Text("Messages").font(.headline), displayMode: .inline)
        .navigationBarHidden(false)
    }

以下是消息详情视图

 VStack
    {

        List {

            ForEach(chatMsgArray, id: \.self) { chat in
                ChatRow(chatMessage: chat)
            }

        }
    }
    .navigationBarItems(leading:
    Button(action: {
    print("Back button pressed...")
    }) {
    } , trailing:Button(action: {
    print("Call button pressed...")
    }) {
    }  )

我需要按两次后退按钮才能进入列表视图。第一次录音时出现错误,第二次点击时显示为列表视图。

[TableView] 仅警告一次:UITableView 被告知布局其可见单元格和其他内容而不位于视图层次结构中(表视图或其超级视图之一尚未添加到窗口中)。这可能会在没有准确信息的情况下强制表视图内的视图加载和执行布局(例如表视图边界、特征集合、布局边距、安全区域插入等),从而导致错误,并且还会由于额外的布局传递而导致不必要的性能开销. 在 UITableViewAlertForLayoutOutsideViewHierarchy 处创建一个符号断点,以便在调试器中捕获此问题并查看导致此问题发生的原因,因此如果可能,您可以完全避免此操作,或者将其推迟到表格视图添加到窗口中。表视图:<_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView:0x107141800; 基类 = UITableView; 帧 = (0 0; 375 667); clipsToBounds = YES; 手势识别器 = ; 层 = ; 内容偏移:{0,-64};内容大小:{375, 483};调整内容插入:{64, 0, 0, 0}; 数据源:<_TtGC7SwiftUIP10$1c38d1a4819ListCoreCoordinatorGVS_20SystemListDataSourceOs5Never_GOS_19SelectionManagerBoxS2___:0x106486780>>

标签: swiftswiftuiios13swiftui-listswiftui-navigationlink

解决方案


下面的代码解决了这个问题

@Environment(.presentationMode) var presentationMode:绑定

然后,在按钮操作或其他内容中,关闭视图:presentationMode.wrappedValue.dismiss()


推荐阅读