首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SwiftUI,接口调用返回成功后如何关闭当前展示视图

SwiftUI是一种用于构建用户界面的声明式框架,它是苹果公司推出的一种基于Swift语言的UI开发工具。通过使用SwiftUI,开发人员可以更快速、更简单地创建跨平台的应用程序。

在SwiftUI中,关闭当前展示视图可以通过以下步骤实现:

  1. 首先,确保你的视图是通过导航栏进行展示的,例如使用NavigationView包裹你的视图。
  2. 在视图中,你可以通过使用presentationMode属性来访问当前视图的展示模式。这个属性是一个Binding类型,它允许你读取和修改当前视图的展示状态。
  3. 要关闭当前展示视图,你可以调用presentationMode.wrappedValue.dismiss()方法。这将触发视图的关闭操作,并返回到上一个视图。

下面是一个示例代码,展示了如何在SwiftUI中关闭当前展示视图:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
                Button(action: {
                    self.presentationMode.wrappedValue.dismiss()
                }) {
                    Text("Close")
                }
            }
            .navigationBarTitle("My View")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在上面的示例中,我们创建了一个包含一个文本和一个关闭按钮的视图。当点击关闭按钮时,调用presentationMode.wrappedValue.dismiss()方法关闭当前展示视图。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 腾讯云移动开发服务:https://cloud.tencent.com/solution/mobile-development
  • 腾讯云云原生应用服务:https://cloud.tencent.com/solution/cloud-native
  • 腾讯云数据库服务:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器运维服务:https://cloud.tencent.com/product/cvm
  • 腾讯云音视频服务:https://cloud.tencent.com/product/tcav
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云物联网服务:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/vr
  • 腾讯云网络安全服务:https://cloud.tencent.com/product/ddos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SwiftUI 布局 —— 尺寸( 上 )

但由于 SwiftUI视图并没有提供尺寸这一属性,因此即使在 SwiftUI 诞生了数年后的今天,如何获取视图的尺寸仍然是网络上的热门问题。...对于不包含子视图视图来说( 例如 Text 这类的元视图 ),它们同样会提供接口供父视图调用以向其传递建议尺寸并获取其需求尺寸。...虽然当前 SwiftUI 中绝大多数的视图并不遵循 Layout 协议,但从 SwiftUI 诞生之始,其布局系统便是按照 Layout 协议提供的流程进行布局操作的,Layout 协议仅是将内部的实现过程包装成开发者可以调用接口...视图尺寸 视图渲染在屏幕上呈现的尺寸,也是热门提问 —— 如何获取视图的尺寸中所指的尺寸。 在视图中可以通过 GeometryReader 获取特定视图的尺寸及位置。...,并将调整的尺寸作为需求尺寸返回给父视图 frame(idealWidth: 100, idealHeight: 100) 如果当前视图收到为未指定模式的建议尺寸,则返回 100 x 100 的需求尺寸

4.7K20

onAppear 的调用时机

布局 在计算好当前需要显示的视图所有的视图SwiftUI 将进入到布局阶段。通过父视图向子视图提供建议尺寸,子视图返回需求尺寸这一过程,最终计算出完整的布局结果。...这会让开发者误以为 onAppear 是在视图渲染( 使用者看到 )才被调用的。但在 SwiftUI 中,onAppear 实际上是在渲染前被调用的。...在 4.0 中版本中,SwiftUI 提供了 Layout 协议,允许我们创建自定义布局容器,通过创建符合该协议的实例,我们便可以判断当前视图是否正处于布局阶段。...判断视图正准备渲染 尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...: SwiftUI 首先对视图进行求值( 由外向内 ) 在全部求值结束开始进行布局( 由父视图到子视图 ) 在布局结束调用视图对应的 onAppear 闭包( 顺序不明,不要假定 onAppear

1.1K10

onAppear 的调用时机

布局在计算好当前需要显示的视图所有的视图SwiftUI 将进入到布局阶段。通过父视图向子视图提供建议尺寸,子视图返回需求尺寸这一过程,最终计算出完整的布局结果。...这会让开发者误以为 onAppear 是在视图渲染( 使用者看到 )才被调用的。但在 SwiftUI 中,onAppear 实际上是在渲染前被调用的。...4.0 中版本中,SwiftUI 提供了 Layout 协议,允许我们创建自定义布局容器,通过创建符合该协议的实例,我们便可以判断当前视图是否正处于布局阶段。...判断视图正准备渲染尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...:SwiftUI 首先对视图进行求值( 由外向内 )在全部求值结束开始进行布局( 由父视图到子视图 )在布局结束调用视图对应的 onAppear 闭包( 顺序不明,不要假定 onAppear 之间的执行顺序

2.1K20

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架的视频流App的构建

您将看到的第一个是当前位于手机存储中的类型。 稍后,您将学习如何从服务器播放视频流。...3) VideoPlayer 是一个方便的 SwiftUI 视图,需要播放器对象才能发挥作用。 您可以使用它来播放视频。 4) 默认情况下,SwiftUI 视图考虑设备的安全区域。...2) 您使用初始值设定项创建 LoopingPlayerUIView 的新实例并返回新实例。 3) SwiftUI 在需要更新底层 UIView 时会调用此方法。 现在,将其留空。...play() 默认情况下,这会将您的循环剪辑显示设置为自动播放和音频关闭。 构建并运行以查看您的完整工作剪辑节目! 不幸的是,当最后一个剪辑播放完毕,视频播放器会变黑。 3....好处是你知道如何SwiftUI 和 UIKit 之间建立桥梁。

6.9K10

用NavigationViewKit增强SwiftUI的导航视图

SwiftUI原生风格扩展功能的调用方法尽可能同原生SwiftUI方式类似 请访问Github下载NavigationViewKit[4] NavigationViewManager 简介 开发者对NavigationView...NavigationView返回视图•通过NotificatiionCenter,让应用程序中任意的NavigationView跳转到新视图•支持转场动画的开启关闭 注册NavigationView...NavigationView的名称(或tag),afterBackDo为当转到根视图执行的代码段。...由于NavigationViewManager在我的app中主要的用途是处理Deep Link,绝大多数的时间都不是在视图代码中调用的。...视图中支持SwiftUI原生的所有定义,例如toolbar、navigationTitle等。 目前在启用转场动画时,title和toolbar会在转场动画才显示,观感稍有不足。日后尝试解决。

3.2K20

SwiftUI 之 HStack 和 VStack 的切换

前言 SwiftUI 的各种堆栈是许多框架中最基本的布局工具,能够让我们定义组视图,这些组视图可以按照水平、垂直或覆盖视图对齐。...然而,就像上面的代码展示的那样,使用 GeometeryReader 来展示动态切换有一个相当明显的缺点,在几何图形阅读器中总是会填充水平和垂直方向的所有可用空间(以便测量实际空间)。...现在我们能通过使用新的 currentLayout 解决使用什么布局,现在我们来更新 body 的实现,简单调用从该属性返回的 AnyLayout ,就像函数一样 — 像这样: struct DynamicStack...就像字面意思一样,这种新的容器将会在我们初始化时传递的候选列表中,基于当前上下文挑选出最优视图。...结语 以上就是通过四种不同的方式实现 DynamicStack 视图,它可以根据当前内容在 HStack 和 VStack 之间动态切换。 - EOF -

2.8K10

【visionOS】从零开始创建第一个visionOS程序

修改现有的窗口页面链接 使用标准的SwiftUI视图构建初始接口视图为您的界面提供基本内容,您可以使用SwiftUI修饰符自定义视图的外观和行为。...许多SwiftUI视图自动处理交互——你所要做的就是提供在交互发生时运行的代码。...这个SwiftUI视图作为你的RealityKit内容的容器,并允许你使用熟悉的SwiftUI技术更新内容。 下面的例子展示了一个使用RealityView来显示3D球体的视图。...在获得用户许可,您还可以使用ARKit与沉浸式空间将内容整合到他们的周围环境中。例如,您可以使用ARKit场景重建来获得家具和附近物体的网格,并让您的内容与该网格进行交互。...当你的空间可见时,其他应用程序仍然隐藏,但当你关闭它时,它们会返回。如果你的应用程序定义了多个空格,你必须在显示一个不同的空格之前取消当前可见的空格。

84240

Ask Apple 2022 与 SwiftUI 有关的问答(下)

Swiftcord[12] 的代码展示如何SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 中显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...macOS APIQ:对于运行 Monterey 的 Mac,能否如何SwiftUI 中实现下面需求的建议:打开一个窗口在该窗口中初始化数据找到所有打开的窗口确定一个窗口是否打开从不在该窗口的视图关闭一个窗口...连锁动画Q:在 SwiftUI 中,如何实现连锁动画?例如,我想先给一个视图做动画,当动画完成立即启动另一个动画。A:不幸的是,目前不可能实现连锁动画。...SwiftUI 当前缺乏动画完成的回调机制。在动画不复杂的情况下,可以通过创建一个符合 Animatable 协议的 ViewModifier 来同步观察动画的进程。...)调用 transformAnchorPreference(key:_, value:_, transform:_) or preference(key:_,value:_) 来在 SwiftUI 更新视图时收集坐标信息调用

14.8K30

SwiftUI 布局 —— 对齐

VStack、HStack、ZStack 等支持多视图的布局容器 你是否了解 SwiftUI 常用布局容器构造方法中的对齐参数的含义?它们又是如何实现的呢?...摆放结束,容器将汇总摆放的所有子视图的情况并向它的父视图( 父容器 )返回一个自身的需求尺寸。...通过创建符合 Layout 协议的布局容器可以清楚地展示上述的过程,下面的代码来自本文附带的演示代码 —— 一个 ZStack 的复制品 : // 容器的父视图(父容器)通过调用容器的 sizeThatFits...subviews: Subviews, // 当前容器内的所有子视图的代理 cache: inout CacheInfo // 缓存数据,本例中用于保存子视图返回的需求尺寸,减少调用次数...,当前容器的父视图将使用该尺寸在它的内部进行摆放 return cache.cropBounds.size } // 容器的父视图(父容器)将在需要的时机调用本方法,为本容器的子视图设置渲染位置

6.3K20

SwiftUI中使用UIKit视图

本文将通过对UITextField的包装来讲解以下几点: •如何SwiftUI中使用UIKit视图如何让你的UIKit包装视图具有SwiftUI风格•在SwiftUI使用UIKit视图需要注意的地方...将UIKit视图包装成SwiftUI视图时,我们需要了解两者生命周期之间的不同,不要强行试图找到完全对应的方法,要从SwiftUI的角度来思考如何调用UIKit视图。...在makeUIVIew执行,updateUIVew必然会执行一次•dismantleUIView在UIViewRepresentable视图被移出视图树之前,SwiftUI调用dismantleUIView...如何实现类似原生TextFiled的链式调用呢?...不过有以下几点需要注意: •如何改变View内的的值(View是结构)•如何处理返回的类型(保证调用链继续有效)•如何利用SwiftUI框架现有的数据并与之交互逻辑 为了更全面的演示,下面的例子,采用了不同的处理方式

8.2K22

SwiftUI 下定制手势

除了提供了更多的调用时机外,而且支持了对按压区域尺寸的智能处理(提高手指触击成功率)。 Value SwiftUI 会依据手势的类型提供不同的数据内容。...•sequenced(序列识别)将两个手势连接起来,只有在第一个手势成功,才会执行第二个手势。譬如,将长按和拖拽连接起来,实现只有当按压满足一定时间才允许拖拽。...组合的手势,Value 类型也将发生变化。仍可使用 map 将其转换成更加易用的数据类型。 手势的定义形式 通常开发者会在视图内部创建自定义手势,如此代码量较少,且容易与视图中其它数据结合。...本例程着重演示如何通过视图修饰器包装手势的方法以及 GestureState 的使用。 2.2 思路 通过计时器在指定时间间隔后向闭包传递当前按压的持续时间。...在本例中,我们选择在 TapGesture 的 onEnded 中回调用户的闭包 总结 当前 SwiftUI 的手势,暂处于使用门槛低但能力上限不足的状况,仅使用 SwiftUI 的原生手段无法实现非常复杂的手势逻辑

2.7K20

SwiftUI 布局协议 - Part2

我们提到 SwiftUI 可能会多次调用 sizeThatFits 去测试视图的灵活性。在这些调用中,你返回的值应该是合理的。...在下一个例子中我们将会把前三个视图水平的放置在视图顶部,三个水平的放置在底部。剩下的视图将会在中间,垂直排列。...当然它还提供了一个从 0.0 到1.0 的 pct 参数,当 pct == 0.0,视图将会展示轮子,当pct == 1.0,视图将会展示 sin波动。中间的数值将会穿插在两者的位置之中。...然后,我们只需要将路径返回给负责展示视图。通过添加绑定布局参数很容易完成。...一个有用的调试工具 回到当 SwiftUI 刚发布的时候,我尽力搞清楚布局是如何工作的,我希望我有一个像我今天要介绍的这种工具 。直到现在,它都是最好的工具,用来添加围绕视图的边框观察视图边缘。

2.7K30

深度解读 Observation —— SwiftUI 性能提升的新途径

中的 willSet 方法,找到当前属性 KeyPath 对应的回调闭包 通过调用该闭包,在 withObservationTracking 发起的线程中调用 onChange 闭包 onChange...闭包调用完成,会清除 withObservationTracking 当前线程中 _AccessList 中对应的信息 清除 ObservationRegistrar 中与本次观察操作有关的属性与回调闭包之间的对应关系...,任意一个被观察属性发生变化,在调用了 onChange 函数,本次观察都将结束 onChange 闭包是在属性值变化之前(willSet 方法中)被调用的 在一次观察操作中,可以观察多个可观察属性。...SwiftUI视图如何观察属性的变化 根据 Observation 框架的工作原理,我们可以推测 SwiftUI 大概会采用下面的方法在可观察属性与视图更新之间创建联系: struct A:View...最后 通过本文的论述,读者应该对 Observation 框架以及该框架如何改善 SwiftUI 的性能有了进一步的认识。

54720

iOS14 致敬 Android 之 Meet Widget

在你的应用中添加 Widget 将 Widget 添加到 App 中需要进行少量的设置,并且将使用 SwiftUI展示他的内容。...•Content Closure:包含 SwiftUI 视图关闭。WidgetKit 调用此方法来渲染 Widget 内容,并从 provider 传递 TimelineEntry 参数。...以下示例显示了游戏状态 widget 的 provider 如何生成时间线,该时间线由服务器上具有当前游戏状态的单个条目以及重载策略组成,以在15分钟内请求新的时间线: struct GameStatusProvider...completion(timeline) } } 在此示例中,如果 Widget 不具有服务器的当前状态,则它可以存储完成的引用,向服务器执行异步请求以获取游戏状态,并在该请求完成时调用完成。...在 Widget 中显示内容 Widget 通常通过组合使用 SwiftUI 视图定义内容。

1.4K20

SwiftUI 4.0 的全新导航系统

受 NavigationView 的能力限制,开发者需要动用各种技巧乃至黑科技才能实现一些本应具备基本功能(例如:返回视图、向堆栈添加任意视图返回任意层级视图 、Deep Link 跳转等 )。...使用新的编程式 API ,开发者可以轻松地实现例如:返回视图、在当前视图堆栈中添加任意视图视图跳转 )、视图外跳转( Deep Link )等功能。...NavigationLink 时仍需设定目标视图,会造成不必要的实例创建开销 较难实现从视图调用导航功能 “能用,但不好用” 可能就是对老版本编程式导航比较贴切地总结。...browser 在 iPad 下,当前视图的 Title 将显示在左侧 image-20220612190914949 editor 不显示返回按钮旁边的上页视图 Title image-20220612191040190...到了 SwiftUI 4.0 版本SwiftUI 已经将其真正的视为了 Button 。

10.3K62

@State 研究

类型及作用域图片来自于SwiftUI for Absoloute Beginners 其中@State只能用于当前视图,并且其对应的数据类型为值类型(如果非要对应引用类型的话则必须在每次赋值时重新创建新的实例才可以...呈现值(投射值)则返回当前包装值是否为偶数 @propertyWrapperstruct TwelveOrLess { private var number: Int init() { self.number...我目前无法找到任何关于SwiftUI建立依赖的更具体的资料或实现线索。不过我们可以通过下面两段代码来猜测编译器是如何处理数据和视图之间的依赖关联时机的。...它通过内部没有暴露的功能接口完成了同视图的依赖创建。...如何使用@State这种作用域范围仅限于当前视图的特性?仅从命名来看,苹果给了他最本质的名称——State。

2.9K20

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

而通过调用环境值或直接修改绑定状态,SwiftUI 则遵循了响应式编程原则,进行了的先调整状态,更新视图的操作。...运行下面的代码,点击左上方的返回按钮,与 NavigationStack 绑定的 path,直到视图返回上一层,才会发生改变。通过环境值返回上层视图也同样需要等待视图返回,才会修改状态。...),立即在屏幕上由左至右滑动,返回上一层视图在滑动返回到上一层视图,应用会锁死。...,左上角的 Back 按钮将消失,但视图并没有返回视图图片如果我告诉你,上述情况正是由前文提到的状态更新滞后所导致,那么你该如何避免这个问题呢?...请至少进入第三级视图滚动当前视图视图处于滚动状态时,点击 NavigationStack 左上角的 “Back” 按钮。

646110
领券