【问题标题】:SwiftUi Navigation link to Same View always gets added as a subview指向同一视图的 SwiftUi 导航链接始终作为子视图添加
【发布时间】:2021-01-03 15:39:39
【问题描述】:

我正在尝试从当前视图上的导航链接导航到具有不同数据的同一视图。

但是,我看到导航到的新视图被添加为第一个视图下方的子视图。如下图所示。这是预期的吗?

代码看起来像这样。

View1 是一个

VStack {
   HStack {
      Text("")
   }
   Divider()
   HStack {
      Text("some text")
   }
   NavigationView {
      VStack {
          NavigationLink(destination: View1(data: newData) {
              Text("option")
          }
      }
   }
}

【问题讨论】:

  • 是的,这是意料之中的。 NavigationLink 在inside NavigationView 中导航,因此如果 NavigationView 小于整个屏幕,那么您将得到您所得到的。
  • 谢谢。那么有没有办法让导航链接只是屏幕的一部分,并且仍然让它们打开占据全屏的视图?我想我必须在导航视图中使用全屏才能正常工作?我的意图是拥有一个文本视图和一个导航视图驱动菜单。在导航链接单击菜单项后,打开另一个视图,该视图在其文本视图中包含一些其他文本,并在关联的导航视图中打开一组新的菜单项。

标签: swiftui swiftui-navigationlink swiftui-navigationview


【解决方案1】:

根据您的评论,您似乎误解了 NavigationView 的实际作用。将其视为 UINavigationController(因为它本质上是一个),并将 NavigationLink 视为具有 Touch Up Inside storyboard segue 动作的视图。

As Asperi said, NavigationView 应该是父视图:

var body: some View {
    NavigationView {
        [...]

        NavigationLink(destination: View1(data: newData) {
            [...]
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2020-07-26
    • 2012-07-25
    相关资源
    最近更新 更多