SwiftUI 教程

SwiftUI 主页 SwiftUI 概览 SwiftUI 与 UIkit

SwiftUI 环境

SwiftUI 安装和环境配置 SwiftUI 基本组件 SwiftUI 构建第一个应用程序

SwiftUI 视图

SwiftUI 视图 SwiftUI 自定义文本视图 SwiftUI 自定义图像视图 SwiftUI 堆栈

SwiftUI 绘制形状

SwiftUI 形状 SwiftUI 绘制线条 SwiftUI 绘制矩形 SwiftUI 绘制圆角矩形 SwiftUI 绘制三角形 SwiftUI 绘制圆形 SwiftUI 绘制星形 SwiftUI 绘制多边形 SwiftUI 绘制饼图 SwiftUI 使用内置形状

SwiftUI 文本

SwiftUI 文本视图 SwiftUI 文本输入和输出

SwiftUI 颜色

SwiftUI 颜色 SwiftUI 颜色选择器 SwiftUI 渐变 SwiftUI 调整颜色

SwiftUI 效果

SwiftUI 效果 SwiftUI 混合效果 SwiftUI BLur 效果 SwiftUI 阴影效果 SwiftUI 悬停效果

SwiftUI 动画

SwiftUI 动画 SwiftUI 创建动画 SwiftUI 创建显式动画 SwiftUI 多个动画 SwiftUI 过渡 SwiftUI 不对称过渡 SwiftUI 自定义过渡

SwiftUI 图像

SwiftUI 图像 SwiftUI 图像作为背景 SwiftUI 旋转图像 SwiftUI 媒体

SwiftUI 视图布局

SwiftUI 视图布局 SwiftUI 视图大小 SwiftUI 视图间距 SwiftUI 视图填充

SwiftUI UI 控件

SwiftUI UI 控件 SwiftUI 按钮 SwiftUI 复选框 SwiftUI 菜单栏 SwiftUI 工具栏 SwiftUI 搜索栏 SwiftUI 文本字段 SwiftUI 滑块 SwiftUI 切换 SwiftUI 选择器 SwiftUI 菜单

SwiftUI 列表 &表格

SwiftUI 列表 SwiftUI 静态列表 SwiftUI 动态列表 SwiftUI 自定义列表 SwiftUI 表格

SwiftUI 表单

SwiftUI 表单 SwiftUI 在部分中拆分表单

SwiftUI 事件处理

SwiftUI 事件处理 SwiftUI 手势 SwiftUI 剪贴板 SwiftUI 拖放 SwiftUI 焦点 SwiftUI 警报

SwiftUI 杂项

SwiftUI 容器 SwiftUI 导航 SwiftUI 通知 SwiftUI 跨平台 UI SwiftUI 数据 SwiftUI 可访问性

SwiftUI 框架集成

SwiftUI 框架集成 SwiftUI 与 UIKit 交互 SwiftUI 创建 macOS 应用

SwiftUI 有用资源

SwiftUI 有用资源 SwiftUI 讨论


SwiftUI- 导航

SwiftUI 导航是指 SwiftUI 中可用的工具和方法,用于管理应用程序内不同视图之间的导航。它允许开发人员创建分层界面,用户可以轻松地从一个屏幕(视图)移动到另一个屏幕(视图),通常使用导航栏、后退按钮和基于堆栈的系统。

SwiftUI 提供了几个组件,以声明的方式方便导航。

导航的关键组件

以下是 SwiftUI 中常用的主要组件:

  • NavigationView

  • NavigationLink

  • NavigationStack

  • NavigationBar

NavigationView

NavigationView 是 SwiftUI 中的容器视图,允许您创建基于导航的界面,用户可以在其中从一个屏幕(视图)移动到另一个屏幕(视图)。它自动提供导航栏的功能,您可以在其中显示标题、按钮和其他控件,并且还可以实现分层导航。

示例

以下 SwiftUI 程序用于 navigationView。

import SwiftUI
struct ContentView: View {
   var body: some View {
      // 将内容包装在 NavigationView 中
      NavigationView {
         VStack {
            Text("Home Screen").font(.largeTitle).padding()

            // NavigationLink 导航至下一个屏幕
            NavigationLink(destination: DetailView()) {
               Text("Go to Detail Screen")
                  .padding()
                  .background(Color.blue)
                  .foregroundColor(.white)
                  .cornerRadius(10)
            }.padding()
         }.navigationTitle("Home")  
      }
   }
}

输出

Navigation

NavigationLink

NavigationLink 是 SwiftUI 中的关键元素,可在 NavigationView(或 iOS 16 及以上版本中的 NavigationStack)内的视图之间导航。它会在界面中创建一个可点击区域,激活后会触发到另一个视图的转换。

示例

以下 SwiftUI 程序用于 navigationLink。

import SwiftUI

struct ContentView: View {
   var body: some View {
      NavigationView {
         VStack {
            Text("Home Screen").font(.largeTitle).padding()

            // NavigationLink 导航至下一个屏幕
            NavigationLink(destination: DetailView()) {
               Text("Go to Detail Screen")
                  .padding()
                  .background(Color.blue)
                  .foregroundColor(.white)
                  .cornerRadius(10)
            }.padding()
         }.navigationTitle("Home")  
      }
   }
}

输出

Navigation

NavigationStack

NavigationStack 是 iOS 16 中引入的新导航容器,用于替代 NavigationView,以更灵活、更高效的方式管理导航。它提供了一种更现代、更强大的方法来处理导航,尤其是在处理动态数据或复杂导航模式时。

示例

以下 SwiftUI 程序用于 navigationStack。

import SwiftUI

struct ContentView: View {
   var body: some View {
      NavigationStack {
         VStack {
            Text("Home Screen")
               .font(.largeTitle)
               .padding()

            // NavigationLink 导航至下一个屏幕
            NavigationLink("Go to Detail Screen", value: "Hello from Home Screen")
               .padding()
               .background(Color.blue)
               .foregroundColor(.white)
               .cornerRadius(10)
         }.navigationTitle("Home")  // 设置主屏幕的导航标题
      }
   }
}

输出

Navigation

NavigationBar

SwiftUI 中的导航栏是指通常出现在 NavigationView 或 NavigationStack 中屏幕顶部的栏,您可以在其中显示当前屏幕的标题并添加按钮或操作。

这是基于导航的应用中的关键 UI 组件,可帮助用户了解他们在应用中的位置,并提供导航和操作控件(如返回、保存等)。

示例

以下 SwiftUI 程序用于 navigationBar。

import SwiftUI

struct ContentView: View {
   var body: some View {
      NavigationView {
         VStack {
            Text("Welcome to the Home Screen")
               .font(.largeTitle)
               .padding()

            NavigationLink("Go to Detail Screen", destination: DetailView())
               .padding()
               .background(Color.blue)
               .foregroundColor(.white)
               .cornerRadius(10)
         }.navigationTitle("Home")  // 设置导航栏的标题
      }
   }
}
struct DetailView: View {
   var body: some View {
      VStack {
         Text("Detail Screen")
            .font(.largeTitle)
            .padding()
      }.navigationTitle("Detail")  // 为详细信息屏幕设置不同的标题
   }
}
@main
struct MyApp: App {
   var body: some Scene {
      WindowGroup {
         ContentView()
      }
   }
}

输出

Navigation