gpt4 book ai didi

SwiftUI 实现自定义 NavigationViewStyle

转载 作者:行者123 更新时间:2023-12-04 17:24:32 26 4
gpt4 key购买 nike

我正在构建的应用程序由多个 View 组成,我需要在它们之间导航。 NavigationView很棒,但是我的应用程序针对 MacOS 11,并且没有单一的内容 View 导航样式(我基本上只想一次显示一个 View ,仅此而已)。
我写了一个 custom view这样做,但它不能利用 NavigationLink和所有其他 helper (或者..可以吗?)
实现自定义 NavigationViewStyle应该有效,但我无法从协议(protocol)中弄清楚。 Apples 文档并没有真正的帮助。
这实际上显示了一个 View ,但导航似乎不起作用或只是不触发 View 更新。我错过了什么?

struct SingleContentNavigationViewStyle : NavigationViewStyle {
func _body(configuration: _NavigationViewStyleConfiguration) -> _NavigationViewStyleConfiguration.Content {
configuration.content
}

typealias _Body = _NavigationViewStyleConfiguration.Content
}

最佳答案

Apple 概述了实现此目的的方法 here .
我修改了他们的示例代码并首先使用它来生成两列外观:

import SwiftUI

struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink("A", destination: Text("A"))
NavigationLink("B", destination: Text("B"))
NavigationLink("C", destination: Text("C"))
}
.navigationTitle("Letters")
Text("Select a Letter")
}
}
}
在 macOS 模拟器上运行上面看起来像这样:
enter image description here
通过添加 .navigationViewStyle(StackNavigationViewStyle()) ,然后我能够使用相同的代码获得单列外观。
import SwiftUI

struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink("A", destination: Text("A"))
NavigationLink("B", destination: Text("B"))
NavigationLink("C", destination: Text("C"))
}
.navigationTitle("Letters")
Text("Select a Letter")
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
现在,有了 .navigationViewStyle(StackNavigationViewStyle()) :
enter image description here
导航按我的预期执行。
希望这可以解决您遇到的 macOS 特定问题。

关于SwiftUI 实现自定义 NavigationViewStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64161948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com