swift - 带有 SwiftUI 的 macOS 应用程序中不稳定的导航 View

标签 swift macos swiftui

我正在尝试使用 SwiftUI 为 macOS 应用程序创建主/详细 View 。目标是在侧栏中选择一个项目并使其相应地更改主 View 。我的这个例子的代码如下所示:

import SwiftUI

struct MyMasterView: View {

    let names = ["Homer", "Marge", "Bart", "Lisa"]

    var body: some View {

        List {
            ForEach(names, id: \.self) { name in
                NavigationLink(name, destination: MyDetailView(name: name))
            }
        }
        .frame(width: 150, height: 300)

    }
}

struct MyDetailView: View {

    var name = "Name"

    var body: some View {

        HStack {
            Text("Hello \(name)")
                .font(.largeTitle)
        }
        .frame(width: 450, height: 300)

    }
}

struct ContentView: View {

    var body: some View {

        NavigationView {
            MyMasterView()
            MyDetailView()
        }
        .navigationViewStyle(DoubleColumnNavigationViewStyle())
        .frame(width: 600, height: 300)

    }
}

运行 Mac 应用程序时,侧边栏选择可能会变为非事件状态,有时会出现弹出 View 而不是更改详细信息 View 。请参阅下面的问题的屏幕截图视频。这是 Mac 上 SwiftUI NavigationView 的错误,还是我需要实现一些东西才能使其在 macOS 上工作?

https://youtu.be/BF7m1OszZ5w

最佳答案

从 Xcode 11.0 (11A420a) 和 macOS Catalina (19A558d) 开始,NavigationView 按预期工作:

import SwiftUI

struct DetailView: View {
    let text: String

    var body: some View {
        Text(text)
            .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

struct ContentView: View {
    private let names = ["Homer", "Marge", "Bart", "Lisa"]
    @State private var selection: String?

    var body: some View {
        NavigationView {
            List(selection: $selection) {
                Section(header: Text("The Simpsons")) {
                    ForEach(names, id: \.self) { name in
                        NavigationLink(destination: DetailView(text: name)) {
                            Text(name)
                        }
                    }
                }
            }.listStyle(SidebarListStyle())
            DetailView(text: "Make a selection")
        }
    }
}

enter image description here

关于swift - 带有 SwiftUI 的 macOS 应用程序中不稳定的导航 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310454/

相关文章:

java - 尝试安装 Android SDK 时出现 "java.lang.NullPointerException"

ios - SwiftUI 按钮比例宽度高度

swift - iOS 上的 ImageRenderer - 生成模糊图像

c# - 在 Mac 上从 C++ 代码调用时 `coreclr_create_delegate` 不起作用

c++ - 如何使用C++测量Mac OS上多线程程序的时间成本?

swiftui - 更简单的 ViewModel 实现

ios - 带有旋转闪烁动画的自定义指示器,如 UIActivityIndi​​catorView

Swift:带有范围错误的下标

swift - 如何合并两个图像

ios - Type Any 没有下标成员(Array,Swift 3.0)