Swiftui 如何在swift中导航到侧栏中的不同视图?

Swiftui 如何在swift中导航到侧栏中的不同视图?,swiftui,Swiftui,如何导航到我在swiftui中创建的其他视图? 下面是一些代码的侧栏,我试图做自己。我遇到的问题是一个白色屏幕显示为一个巨大的白色按钮 VStack { NavigationView { HStack { NavigationLink(destination: SettingsView()) { Text("Settings")

如何导航到我在swiftui中创建的其他视图? 下面是一些代码的侧栏,我试图做自己。我遇到的问题是一个白色屏幕显示为一个巨大的白色按钮

VStack {
         NavigationView {   
            HStack {
                NavigationLink(destination: SettingsView()) {
                    Text("Settings")
                        .font(.system(size:20))
                        .foregroundColor(.black)
                    }
                }
    
                NavigationLink(destination: Settings()) {
                    Text("Settings")
                    .font(.title2)
                }
            }
            NavigationLink(destination: AboutUs()) {
                  Text("About us")
                    .font(.title2)
                    
                }
        }
    }

}

除非您位于在iOS和macOS上具有非常特殊外观的
导航视图中,否则您不会使用
导航链接。由于您正在制作自己的侧边栏,这意味着您将不会使用导航视图/链接

相反,您可以使用@State变量或带有@Published属性的observeObject来跟踪哪个视图处于活动状态。在本例中,我选择了后者:



enum ViewTypes {
    case main
    case settings
    case aboutUs
}

class SidebarNavigationManager : ObservableObject {
    @Published var viewType : ViewTypes = .main
}

struct ContentView: View {
    @StateObject var navigationManager = SidebarNavigationManager()
    
    var body: some View {
        HStack(alignment: .top) {
            SidebarView(navigationManager: navigationManager)
            .frame(width: 100)
                .frame(maxHeight: .infinity)
            .border(Color.green)
            
            //Main content
            VStack {
                switch navigationManager.viewType {
                case .main:
                    MainView()
                case .settings:
                    SettingsView()
                case .aboutUs:
                    AboutUsView()
                }
            }.frame(maxWidth: .infinity)
        }.frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

struct SidebarView : View {
    @ObservedObject var navigationManager : SidebarNavigationManager
    
    var body: some View {
        //Sidebar
        VStack {
            Button(action: { navigationManager.viewType = .main }) {
                Text("Main")
            }
            Button(action: { navigationManager.viewType = .settings }) {
                Text("Settings")
            }
            Button(action: { navigationManager.viewType = .aboutUs }) {
                Text("About Us")
            }
        }
    }
}

struct MainView : View {
    var body: some View {
        Text("Main")
    }
}

struct SettingsView : View {
    var body: some View {
        Text("Settings")
    }
}

struct AboutUsView : View {
    var body: some View {
        Text("About Us")
    }
}


你想在侧边栏中导航还是在侧边栏中有影响应用程序主内容视图的链接?在侧边栏中导航以移动到不同的视图主内容视图将保持不变,但侧边栏中的视图将更改?因此我想让用户从主窗口打开侧边栏“内容视图”导航到其他视图,然后返回主内容视图。当我单击按钮从“内容视图”打开侧栏时,我无法将侧栏推到主屏幕。现在,您已经帮助我创建了侧栏,我如何在内容屏幕(主屏幕)上查看侧栏。我想在内容视图中实现边栏,用户将点击一个按钮从内容视图中打开边栏。对不起,我还不清楚。我已经向您展示了侧边栏,并向您展示了如何导航。您所问内容的措辞对我来说太混乱,我无法找出如何提供帮助。现在,我从上面的代码中得到一个错误,您在视图预览侧的SidebarView中的调用中提供了参数“navigationManager”缺少的参数,当我尝试传入“navigationManager”并分配SidebarNavigationManager时,我仍然会遇到一个错误,您必须显示代码。我没有包括预览。