【问题标题】:Double Tap is required to navigate from details view to list View从详细信息视图导航到列表视图需要双击
【发布时间】:2020-02-10 11:21:35
【问题描述】:

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

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 uitableview clipstobounds="YES;手势识别器">>

【问题讨论】:

  • 如果我删除以下行它工作正常。 .navigationBarItems(leading: Button(action: { print("后退按钮被按下...") }) { } , trailing:Button(action: { print("呼叫按钮被按下...") }) { } )

标签: swift swiftui ios13 swiftui-list swiftui-navigationlink


【解决方案1】:

以下代码解决了这个问题

@Environment(.presentationMode) varpresentationMode: 绑定

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 2016-04-14
    • 1970-01-01
    • 2015-11-11
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多