SwiftUI之NavigationView用法

NavigationView是SwiftUI应用程序最重要的组件之一,它使我们能够轻松推送和弹出屏幕,以清晰,分层的方式向用户展示信息。NavigationView一般用在页面的最外层。可以在其内部添加标题栏,页面内容,以及底部导航栏等等。
我们可以很方便的使用NavigationView来为页面添加标题栏,假设这个页面内容只有一个“Hell World”,那么我们可以这样为页面中添加标题栏

NavigationView {
    Text("Hello, World!")
        .navigationBarTitle("我是导航栏标题")
}

您可以通过添加displayMode参数来自定义标题的样式,有下面这三种样式:

  1. large选项显示大标题,这对于导航堆栈中的顶级视图很有用。
  2. inline选项显示小标题,这对于导航堆栈中的辅助视图,第三视图或后续视图很有用。
  3. automatic选项是默认选项,它使用以前使用的任何视图。
    一般我们常用的是 inline样式:
.navigationBarTitle("Navigation", displayMode: .inline)

如果想在标题栏中添加按钮,可以使用navigationBarItems方法,navigationBarItems方法有两个参数leading和trailing,分别可以在标题栏的左边和右边添加AnyView。

Text("Hello, World!")
    .navigationBarTitle("我是导航栏标题")
    .navigationBarItems(
        leading:
            Button("按钮1") {
                self.score -= 1
            },
        trailing:
        Text("按钮2")
    )

也可以在同一则添加多个不同的View

Text("Hello, World!")
    .navigationBarTitle("我是导航栏标题")
    .navigationBarItems(
        leading:
             HStack {
                   Button("按钮1") {
                       self.score -= 1
                   }
                  Text("按钮2")
           }
    )