SwiftUI学习-视图切换方式

视图切换方式

状态

通过当前的状态(e.g. @State@StateObject@ObservedObject...)来决定当前的SwiftUI View展示与否,且自带有动画效果。示例如下

dart 复制代码
struct ContentView: View {
  @State var show = true
  var body: some View {
    
    VStack {
      Button("Show Text") {
        show.toggle()
        print(show)
      }
      
      if show {
        Text("Show")
      }
    }
  }
}

Sheet

隐式地启动/嵌入新的VC,类似于iOS开发中的presentViewController,SwiftUI提供如下两个API。

less 复制代码
public func sheet<Item, Content>(item: Binding<Item?>,
                                 onDismiss: (() -> Void)? = nil,
                                 @ViewBuilder content: @escaping (Item) -> Content)
-> some View where Item : Identifiable, Content : View

public func fullScreenCover<Content>(isPresented: Binding<Bool>,
                                     onDismiss: (() -> Void)? = nil,
                                     @ViewBuilder content: @escaping () -> Content)
-> some View where Content : View

调用示例如下

dart 复制代码
struct ContentView: View {
  @State var show = false
  
    var body: some View {
      Button("Show Text") {
          show.toggle()
          print(show)
      }.sheet(isPresented: $show) {
        Button("Hide Text") {
            show.toggle()
            print(show)
        }
      }
    }
}

表示视图栈的View,该View表示导航层次结构中可见的路径。使用NavigationView创建一个基于导航的应用程序,用户可以在其中遍历视图集合。 用户通过选择你提供的NavigationLink导航到目标视图。在iPadOS和macOS上,目标内容将在下一栏中显示。 其他平台将一个新的View推入堆栈,并通过平台特定的控件(如后退按钮或滑动手势)从堆栈中删除项目。

在macOS上显示多列导航视图,在iOS上显示视图堆栈的图表(类比的UINavigationController)

示例如下:

css 复制代码
struct ContentView: View {
    var body: some View {
      NavigationView {
        NavigationLink {
          Text("Destination")
        } label: {
          Text("Show Text")
        }
      }
    }
}
相关推荐
大熊猫侯佩7 小时前
WWDC 25 风云再起:SwiftUI 7 Charts 心法从 2D 到 3D 的华丽蜕变
swiftui·swift·wwdc
大熊猫侯佩2 天前
Swift 6.2 并发江湖:两大神功破局旧制,代码运行经脉革新(下)
swiftui·swift·wwdc
大熊猫侯佩2 天前
Swift 6.2 并发江湖:两大神功破局旧制,代码运行经脉革新(上)
swiftui·swift·wwdc
大熊猫侯佩2 天前
SwiftUI 7 江湖新风:WWDC25 揭晓神秘武林志
swiftui·swift·wwdc
大熊猫侯佩2 天前
SwiftUI 7(iOS 26 / iPadOS 26)中玻璃化标签页的全新玩法
swiftui·swift·apple
Daniel_Coder2 天前
iOS Widget 开发-1:什么是 iOS Widget?开发前的基本认知
ios·swiftui·swift·widget
小弟调调2 天前
Vidwall: 支持将 4K 视频设置为动态桌面壁纸,兼容 MP4 和 MOV 格式
macos·swiftui·桌面应用·macos app
帅次3 天前
【iOS设计模式】深入理解MVC架构 - 重构你的第一个App
ios·swiftui·objective-c·iphone·swift·safari·cocoapods
东坡肘子3 天前
高温与奇怪的天象 | 肘子的 Swift 周报 #092
人工智能·swiftui·swift