Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI:如何在MacOS中用另一个视图替换视图_Macos_Swiftui_Swiftui Navigationlink - Fatal编程技术网

SwiftUI:如何在MacOS中用另一个视图替换视图

SwiftUI:如何在MacOS中用另一个视图替换视图,macos,swiftui,swiftui-navigationlink,Macos,Swiftui,Swiftui Navigationlink,我想在MacOS上的SwiftUI中按下按钮时用另一个视图替换视图(AppKit而不是Catalyst) 我试过这样的导航链接 struct ContentView: View { var body: some View { NavigationView { NavigationLink( destination: Text("DESTINATIONVIEW").frame(maxWidth: .infinity, maxHeight: .infinity)

我想在MacOS上的SwiftUI中按下按钮时用另一个视图替换视图(AppKit而不是Catalyst)

我试过这样的导航链接

struct ContentView: View {
    var body: some View {
      NavigationView {
        NavigationLink( destination: Text("DESTINATIONVIEW").frame(maxWidth: .infinity, maxHeight: .infinity) ,
                              label: {Text("Next")} )
      }.frame(width: 500.0, height: 500.0)
  }
}
目标视图的显示方式类似于iPadOS,类似于源视图右侧的主详细信息显示方式。 我想要的是将SourceView替换为目标(与iOS中几乎相同)

另一种方法是使用bool变量切换显示的视图

struct MasterList: View
{
  private let names = ["Frank", "John", "Tom", "Lisa"]

  @State var showDetail: Bool = false
  @State var selectedName: String = ""

  var body: some View
  {
    VStack
    {
      if (showDetail)
      { DetailViewReplace(showDetail:$showDetail, text: "\(selectedName)" )
      } else
      {
        List()
          {
            ForEach(names, id: \.self)
            { name in
              Button(action:
              {
                  self.showDetail.toggle()
                  self.selectedName = name
              })
              { Text("\(name)")}
                .buttonStyle( LinkButtonStyle() )
            }
        }.listStyle( SidebarListStyle())  
      }
    }
  }
}


struct DetailViewReplace: View {
  @Binding var showDetail: Bool
  let text: String

  var body: some View
  {
    VStack
    {
      Text(text)
     .frame(maxWidth: .infinity, maxHeight: .infinity)
      Button(action:
      { self.showDetail.toggle()
      })
      { Text("Return")
      }
    }
  }
}
但如果要处理许多观点,这对我来说似乎相当麻烦

有这样做的最佳实践吗