首页 > 解决方案 > NavigationLink 在紧凑型 iPad 模式下的问题。(SwiftUI)

问题描述

我正在创建一个非常简单的应用程序,在适用于 iPad 的 iOS 14 中,我有一个包含两个视图的 NavigationView:

var body: some View {

    NavigationView {

        // shows sidebar in iPad
        SidebarIpad()

        // shows the first view 
        InitialView()
    }
}

初始视图假设它是屏幕 1,它只有一个进入屏幕 2 的 NavigationLink,屏幕 2 只有一个到屏幕 3 的 NavigationLink,屏幕 3 显示文本“Hello world”。

当 iPad 处于全屏状态时,一切正常,当我打开应用程序时,我会看到侧边栏,屏幕 1 进入视图 2,屏幕 2 进入视图 3。在视图 3 中

如果我在视图 3 中并且我使用 SplitView 从全屏切换到 2/3 或 1/3 视图 3 仍然在屏幕上。我遇到的问题是,如果我以紧凑 1/3 模式打开应用程序并在我将屏幕扩展到纵向(2/3)时从视图 2 转到视图 3,则视图 3 消失,我返回视图 2。

控制台中显示以下内容:

[SwiftUI] 在视图更新期间修改状态,这将导致未定义的行为。

[Assert] displayModeButtonItem 是内部管理的,不会针对 DoubleColumn 样式公开。返回一个空的、断开连接的 UIBarButtonItem 以履行非空合同。

我究竟做错了什么?我已经检查过了,.navigationViewStyle(StackNavigationViewStyle())因为它是一个 iPad 应用程序,所以它不起作用,这样我只会在所有视图中显示固定的侧边栏

标签: ipadswiftuiios14navigationviewswiftui-navigationlink

解决方案


推荐阅读