首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让SwiftUI SidebarMenu每次都显示相同的DetailView,而不是创建一个新的(在macOS上)

在SwiftUI中,可以使用NavigationView和NavigationLink来实现侧边栏菜单和详细视图之间的导航。默认情况下,每次点击菜单项时,都会创建一个新的详细视图。如果希望每次点击菜单项时都显示相同的详细视图,可以使用@State属性包装详细视图,并在导航链接中使用该属性。

以下是一个示例代码,演示如何实现这个功能:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @State private var selectedMenuItem: MenuItem? = nil
    
    var body: some View {
        NavigationView {
            List {
                ForEach(MenuItem.allCases, id: \.self) { item in
                    NavigationLink(destination: DetailView(selectedMenuItem: $selectedMenuItem)) {
                        Text(item.rawValue)
                    }
                }
            }
            .listStyle(SidebarListStyle())
            
            if let selectedItem = selectedMenuItem {
                DetailView(selectedMenuItem: $selectedItem)
            } else {
                Text("Select a menu item")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
            }
        }
    }
}

struct DetailView: View {
    @Binding var selectedMenuItem: MenuItem
    
    var body: some View {
        VStack {
            Text(selectedMenuItem.rawValue)
                .font(.largeTitle)
            
            // Add your content here
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

enum MenuItem: String, CaseIterable {
    case item1
    case item2
    case item3
    // Add more menu items if needed
}

在上面的代码中,我们使用了@State属性包装了selectedMenuItem变量,以便在ContentView和DetailView之间进行双向绑定。每次点击菜单项时,selectedMenuItem的值都会更新,从而导致DetailView重新渲染。

请注意,这只是一个示例代码,你可以根据自己的需求进行修改和扩展。另外,这里没有提及任何特定的云计算品牌商,你可以根据自己的需求选择合适的云计算平台和产品。

希望这个答案能够满足你的需求,如果有任何问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百三十三)导航视图NavigationView

很多App都有个人中心的侧滑菜单,通常在页面左侧边缘右拉时,即可弹出个人中心的菜单页面。对于Android来说,侧滑功能用到了抽屉布局DrawerLayout,我们只要把页面的根布局设置为DrawerLayout,并指定弹出的侧滑视图,就能通过右拉页面左侧边缘,从而拉出定义好的侧滑视图。 有关DrawerLayout的详细说明参见《Android开发笔记(一百二十)两种侧滑布局》,这里就不再赘述了,接下来要介绍的是Android自带的导航视图NavigationView,它是一个侧滑菜单控件,常常用来展示个人中心页面,以及导航菜单栏目。比如下面这个图片,便是从CSDN的App个人中心页面截图而来。

04

从用SwiftUI搭建项目说起

后续这个SwiftUI分类的文章全部都是针对SwiftUI的日常学习和理解写的,自己利用Swift写的第二个项目也顺利上线后续的需求也不是特着急,最近正好有空就利用这段时间补一下自己对SwiftUI的理解,这个过程当中正好把整个学习过程记录下来,方便自己查阅,也希望能给需要的同学一点点的帮助。由于自己还欠着RxSwift的帐,这次也是想着先放弃别的账务(欠的的确挺多的)先全心全意的把这两块的帐给补补,希望补上这笔账之后自己对Swift的理解也能上一个台阶,对Siwft的理解自认为还是感觉欠缺的,不算是真的深入的掌握,我对SwiftUI也是在学习当中,现在能查阅的关于SwiftUI的资料很多是需要收费的,遇到问题只能想办法努力解决,有写的不钟意的地方,希望多加指正!

02
领券