如何使Swiftui的NavigationView还记得其在MacOS中的成员的状态? 我已经在MacOS中实现了Swiftui NavigationView,如下所示: struct App1:app { var身体:某些场景{ WindowGroup { navigationView { 侧栏() ...

问题描述 投票:0回答:0
struct App1: App { var body: some Scene { WindowGroup { NavigationView { SideBar() Text("SCREEN 1") } } } }

where
SideBar()

是导航链接的列表,如下所示:
struct SideBar: View {
    var body: some View {
        List {
            NavigationLink(destination: SomeListView1()){
                Text("Item1")
            }
            NavigationLink(destination: SomeListView2()){
                Text("Item2")
            }
            NavigationLink(destination: SomeListView3()){
                Text("Item3")
            }
        }
    }
}

where
SomeListViewn()

包含一个项目列表。
当我单击侧栏中的不同导航链接时,相关视图每次都会重新加载。举例滚动位置并重新定位视图。我希望导航的视图记住它们的状态,因此当您切换到侧边栏中的不同项目并切换后,您可以继续在关闭的地方继续。
如何实现?

	
使用NavigationView的instead您可能想要的是将TabView与New .sideBaradaptable样式一起使用,如此示例:

Item1

在MacOS上的此样式TabView的情况下,侧边栏将类似,就好像您使用了导航视图一样,但是,当您更改视图时,它将保持状态,通过敲击按钮并更改视图,可以通过上述示例进行检查。但是请注意,这仅在MacOS 15+上可用,不幸的是,它直到最近才开始正常工作(在MacOS 15.2和Lower上,它具有一个错误,该错误导致其在单击文本时未正确捕获点击,请参见:
Https:
Https: //developer.apple.com/forums/thread/764764
).
如果您需要支持MACOS上的较低版本,因此需要使用NavigationView / navigationsplitview,最简单的替代解决方案可能是使用@ScenEstorage来保持每个视图的状态(假设您在侧栏中使用不重复重复的侧栏中的独特视图) .
	

xcode macos swiftui state navigationview
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.