首页
学习
活动
专区
工具
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重新渲染。

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

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

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

相关·内容

没有搜到相关的视频

领券