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

SwiftUI -如何关闭一个假的模态视图-从它里面的第二个视图看,有一个关闭按钮?

SwiftUI是一种用于构建用户界面的现代化框架,它可以帮助开发者快速、简单地创建各种各样的应用程序。在SwiftUI中关闭一个假的模态视图并从第二个视图中看到一个关闭按钮,可以通过以下步骤实现:

  1. 首先,在第一个视图中创建一个状态变量来控制模态视图的显示与隐藏。可以使用@State属性包装器来创建一个布尔类型的状态变量,例如isModalPresented
  2. 在第一个视图中,使用一个按钮或其他触发事件的UI元素来打开模态视图。在按钮的动作闭包中,将isModalPresented设置为true,以显示模态视图。
  3. 在第二个视图中,添加一个关闭按钮。在按钮的动作闭包中,将isModalPresented设置为false,以关闭模态视图。

下面是一个示例代码:

代码语言:txt
复制
struct ContentView: View {
    @State private var isModalPresented = false
    
    var body: some View {
        VStack {
            Button("Open Modal") {
                isModalPresented = true
            }
            .padding()
            
            if isModalPresented {
                ModalView(isModalPresented: $isModalPresented)
            }
        }
    }
}

struct ModalView: View {
    @Binding var isModalPresented: Bool
    
    var body: some View {
        VStack {
            Text("Modal View")
                .font(.title)
                .padding()
            
            Button("Close") {
                isModalPresented = false
            }
            .padding()
        }
    }
}

在上面的代码中,ContentView是第一个视图,ModalView是模态视图。通过点击"Open Modal"按钮,可以打开模态视图,模态视图中有一个"Close"按钮,点击该按钮可以关闭模态视图。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。如果你想了解更多关于SwiftUI的信息,可以参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SheetKit——SwiftUI模态视图扩展库

SheetKit——SwiftUI模态视图扩展库 新写了个SwiftUI Sheet扩展库,添加对可变高度Sheet支持。...[1] SheetKitGithub地址为 https://github.com/fatbobman/SheetKit SheetKit是什么 SheetKit[2]是一个SwiftUI模态视图增强库...•模态视图集中管理SwiftUI通常采用.sheet来创建模态视图,对于简单应用来说,这种形式非常直观,但如果应用程序逻辑比较复杂、需要模态视图众多,则上述方式就会让代码显得十分混乱,不易整理。...•新半高模态视图在WWDC 2021中,苹果为大家带来了期待已久半高模态视图。或许推出比较仓促,这种很受欢迎交互方式并没有提供SwiftUI版本,仅支持UIKit。...image-20210916190606032 下面的代码将展示一个预设bottomSheet视图: sheetKit.present(with: .bottomSheet){ Text("Hello

2.9K20

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

系统会自动将以下类型输入映射到你SwiftUI事件处理代码: 这张照片显示是窗户角落控件,以及一个人坐在椅子上,双手放在膝盖上自上而下叠加视图。 间接输入。...将指针移动到窗口栏旁边圆圈上,显示窗口关闭按钮。将光标移动到窗口一个角落,以将窗口栏变为调整大小控件。 tips:应用程序不能控制窗口在空间中位置。...Model3D视图加载USDZ文件或其他资产类型,并在窗口中以其固有大小显示。在你应用中已经模型数据地方使用它,或者可以网络上下载。...当指定手势发生在实体上时,SwiftUI执行提供闭包。 下面的示例将一个点击手势识别器添加到上一个示例中球体视图中。...下面的例子展示了一个按钮打开带有solarSystem标识符空格: Button("Show Solar System") { Task { let result = await

75240

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

Adding Local Playback 您可以播放两种类型视频。 您将看到一个是当前位于手机存储中类型。 稍后,您将学习如何服务器播放视频流。...首先,导航到 VideoFeedView.swift 并在 SwiftUI 导入正下方添加以下导入: import AVKit 看看下面这个,你会看到你已经一个列表和一个视频数组。...构建并运行以查看外观。 您可以看到视频播放器显示了一组基本控件。 这包括一个播放按钮一个静音按钮和用于前进和后退 15 秒跳过按钮。 2....当您返回到feed时,预览会停止地方恢复。 6. Trying Not to Steal the Show 如果您打算制作一个包含视频应用,那么考虑您应用将如何影响您用户非常重要。...您会在左上角看到画中画按钮……否则不会! 缺点是,在撰写本文时,iOS 14.5是可用最新版本,VideoPlayer SwiftUI 视图未显示画中画按钮

6.9K10

解析SwiftUI布局细节(二)循环轮播+复杂布局

,都比较简单,可能是就是这个 environmentObject (我把称为环境变量)这个是需要特别说明一个变量,名字上可以看出,这个修饰符是针对全局环境。...GeometryReader 主要作用就是能够获取到父View建议尺寸,这就是主要作用,要没有我们面临可能就是无休止传值了,SwiftUI 既然是声明式UI,按我理解你就没有办法去获取某一个视图视图之类...一个还得说明一下,GeometryReader 改变了显示内容方式。在 iOS 13.5 中,内容放置方式为 .center。在 iOS 14.0 中则为:.topLeading。...方式去实现,很多同行说目前来看SwiftUIList在数据量大情况下性能不是特别好,采用ScrollView是个不错方式,而且也很容易构建出来,并不是说每一个Item位置都需要你去计算,...首页顶部自动循环轮播代码实现如下,代码有些注释还是比较重要,注意注释: struct HomeBannerView: View { @EnvironmentObject var

11.9K20

如何SwiftUI中实现interactiveDismissDisabled

如何SwiftUI中实现interactiveDismissDisabled 如想获得更好阅读体验,可以访问我博客www.fatbobman.com[1] 本文中我们将探讨如何实现一个SwiftUI...3.0中新增功能——interactiveDismissDisabled增强版;如何创建更SwiftUI功能扩展。...在今年推出SwiftUI 3.0版本中,苹果添加了一个View扩展:interactiveDismissDisabled,该扩展实现了上面的一个要求——通过代码控制是否允许手势取消Sheet。...因此,我决定使用类似的方式实现。 原理 委托 iOS 13开始,苹果调整了模态视图委托协议(UIAdaptivePresentationControllerDelegate)。...注入 创建一个UIView(通过UIViewRepresentable),在其中查找到持有UIViewController A。

3.8K40

C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

WindowManager工作方式与此类似,作用有点像一个指挥者,目的是强制执行模态(仅限非模态WPF)窗口生命周期。所以,生命周期并不神奇。...好,现在您已经看到了功能,让我们看看它是如何组合在一起。正如您屏幕截图中看到,我选择按功能组织项目:客户、订单、设置等。...第一个显示视图中包含CustomerWorkspace应用程序,编辑特定客户地址。第二个屏幕是相同,但其视图/视图模型对是三维旋转,因此您可以看到UI是如何组成。...码头按钮,每个正在进行IWorkspace都有一个按钮。单击特定按钮可使Shell激活该特定工作区。...此ViewModel两个上下文视图(请参见下文)。在上面的屏幕截图中,我们显示了详细信息视图

2.5K20

SwiftUI搭建项目说起

这两张图相信看过苹果官方SwiftUI介绍文档并且跟着写了一遍代码同学应该不陌生,当然我们目的不是说这两篇代码,这个具体可以到下面连接去查看,我自己跟着写了一遍之后对SwiftUI也是一个基本认识...,针对一个需求或者是一个项目我们基本上都是写UI开始,根据设计图再编造一些数据来做,只是在写过程中及时效果也都是脑补!... SwiftUI 谈声明式 UI 与类型系统 跨平台: 在最新swiftUI 5.1中,我们创建一个MultilPlatform App了下面这些区别: ·Before func...简单看看Na+Tb代码 ---- SceneDelegate开始, 根控制器就是 UIHostingController,我们需要做第一步就是设置视图 rootView //...下面的参考文章相信能帮助我们更好理解一下,SwiftUI! 参考文章: Apple SwiftUI SwiftUI 谈声明式 UI 与类型系统 如何评价 SwiftUI? 项目地址

4.4K20

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

阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建底部开始滚动视图Q:我如何实现一个在底部对齐滚动视图,在 macOS 上会不会有糟糕性能?...将背景扩展到安全区域Q:如果我一个自定义容器类型,可以接受一个顶部和底部视图,是否办法让 API 调用者将所提供视图背景扩展到安全区域内,同时将内容( 如文本或按钮 )保留在安全区域内?...macOS APIQ:对于运行 Monterey Mac,能否如何SwiftUI 中实现下面需求建议:打开一个窗口在该窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在该窗口视图关闭一个窗口...在 SwiftUI 中,一个第一版开始就存在但尚未公开SwiftUI 实现滚动容器 —— _ScrollView 。...但这个滚动两大问题,1、是一个未公开半成品,可能会被 SwiftUI 框架中移除;2、不支持懒加载,即使和 Lazy 视图一起使用也会一次性加载全部视图

14.7K30

架构之路 (五) —— VIPER架构模式(一)

开始 首先看下主要内容: 在本教程中,您将了解如何SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行iOS应用程序,来自翻译。...SwiftUI自己独特做事方式。如果你将VIPER职责映射到域对象将会不同,如果你将它与UIKit应用教程相比较。 1....Creating a View with a Presenter SwiftUI视图模板中创建一个新文件,并将其命名为TripListView.swift。...当您将其放置在NavigationView中时,该链接将成为一个按钮,将destination推送到导航堆栈上。 content块可以是任何一个SwiftUI视图。...使用presenter向列表添加新路径点add按钮一个列表List,使用ForEach与presenter为每个路点创建一个单元格。

17.4K10

最新iOS设计规范二|7大应用架构

人们通过以下方式关闭卡片: 屏幕顶部向下滑动 卡内容滚动到顶部时,可以屏幕任意位置向下滑动 轻按一个按钮 工作表常用在无法实现复杂任务、非沉浸式模式和内容。...尤其要谨慎地创建涉及视图层次结构模态任务,因为人们可能会迷路而忘记了如何追溯其步骤。如果模态任务必须包含子视图,请提供清晰返回路径和完成路径。除非完成任务,否则不要使用“完成”按钮。...始终要有取消/关闭模态视图按钮。例如:你可以使用“完成”或“取消”。至少有一个按钮以确保辅助技术访问模态视图,并代替手势关闭模态视图。 必要时,通过在关闭模式视图之前进行确认来帮助人们避免数据丢失。...不管人们是使用关闭手势还是按钮关闭视图,如果该操作可能导致用户生成内容丢失,请出示说明情况并提供解决方法操作表。 不要让模态视图出现在Popover(弹出式窗口)上。...iOS默认过渡方式是:模式视图屏幕底部向上滑入,被关闭时向下滑出。注意在整个APP中使用统一模态转换样式。

2.6K20

掌握 SwiftUI task 修饰器

详情请参阅 SwiftUI 视图生命周期研究[3] 一文中有关 onAppear 和 onDisappear 章节SwiftUI 为了判断视图状态是否发生了改变,它会在视图存续期内,反复地生成视图类型实例以达成此目的...task_longrun1_2022-08-07_09.07.44.2022-08-07 09_09_38我们本意是通过按钮来开启和关闭计时器显示以控制任务生命周期( 关闭时结束任务 ),但在点击...作为一个事件源类型 Source of Truth,每当接收到一个消息时,都会导致 SwiftUI视图 body 重新求值。...请阅读 避免 SwiftUI 视图重复计算[4] 一文,以了解更多有关事件源方面的内容如果,你想有选择性处理消息,可以考虑用 task 来代替 onReceive,例如:struct NotificationHandlerDemo...和 SwiftUI 视图生命周期连接起来,让开发者可以在视图中高效地构建复杂异步任务。

2.2K30

《iOS Human Interface Guidelines》——Popover弹出框

一个弹出框: 是一个自包含模态视图 在水平常规环境下,显示一个箭头指向出现半透明背景显示背后模糊内容 可以包含大范围对象和视图,比如: 列表、图片、地图、文本、网页或自定义视图 导航栏...如果你在全屏显示水平紧凑环境下显示弹出框,查看Modal View来获取其他全屏模态视图指南。 不要提供“消除弹出框”按钮。当弹出框显示已经不必要时候应该自动关闭。...考虑下面的情节来确定何时弹出框是不必要: 一般来说,当人们点击弹出框以外区域时保存用户工作。不是所有弹出框都要求明确退出,所以人们可能错误地关闭。...特别是,你不应该同时显示一个谈出啊匡一个中出现串联或层级弹出框。 不要在弹出框顶部显示模态视图。除了警告框,都不应该显示在弹出框顶部。...可能的话,允许人们通过一次点击关闭一个弹出框并打开一个弹出框。这个行为会在有多个不同打开弹出框按钮时很合适,因为这让人们避免了很多额外点击。 不要使用太大弹出框。

63530

掌握 SwiftUI task 修饰器

详情请参阅 SwiftUI 视图生命周期研究 一文中有关 onAppear 和 onDisappear 章节 SwiftUI 为了判断视图状态是否发生了改变,它会在视图存续期内,反复地生成视图类型实例以达成此目的...图片 我们本意是通过按钮来开启和关闭计时器显示以控制任务生命周期( 关闭时结束任务 ),但在点击 Hide Timer 按钮后,app 出现了无法响应且控制台仍在持续输出( 不按照原定间隔时间...图片 当一个 @Sendable async 闭包被标记 @_inheritActorContext 属性后,闭包将根据其声明地点来继承 actor 上下文( 即应该在哪个 actor 上运行 )。...作为一个事件源类型 Source of Truth,每当接收到一个消息时,都会导致 SwiftUI视图 body 重新求值。...请阅读 避免 SwiftUI 视图重复计算 一文,以了解更多有关事件源方面的内容 如果,你想有选择性处理消息,可以考虑用 task 来代替 onReceive,例如: struct NotificationHandlerDemo

3.5K60

一段因 @State 注入机制所产生“灵异代码”

与大多数 View Extension 和 ViewModifier 不同,在视图中,通过 .sheet 或 .fullScreenCover来声明模态视图内容代码闭包,只会在显示模态视图时候才会被调用...为了演示上面的论述,我们将 Sheet 中代码用一个符合 View 协议结构体包装起来,以方便我们观察。...SheetInitMonitorView 没有任何输出( 意味着闭包没有被调用 ),只有在模态视图进行显示时,SwiftUI 才执行 .sheet 闭包中函数,创建 Sheet 视图。...dump(_n) }}Sheet 视图上下文当 SwiftUI 创建并显示一个 Sheet 视图时,并非在现有的视图树上创建分支,而是新建一棵独立视图树。...在面对这些“灵异现象”时,如果我们能对其进行更多研究,那么不仅可以在今后避免类似的问题,而且在分析过程中,也能对 SwiftUI 各种运行机制深入掌握。希望本文能够对你有所帮助。

1.9K20

面向所有人 UI 编程 :透过点按弹窗初尝 SwiftUI

其中 View 表示一个视图,比如我们在手机上看到一个滑条,一张图片,一个列表等种种,都叫做视图;而 Modifier 则是修饰器,作用是为视图增加功能,比如圆角,动画,阴影,边际,背景等等。...写 SwiftUI 得过程,实际上就是将一个个最基本 View 像滚雪球一样越包越大过程,你把一个个基础视图和修改器用一个更大视图包在一起,用修改器修改更大视图,就能实现复杂功能。...纵向排列 View 在 SwiftUI 叫做 VStack,它用一个花括号 {包住里面的内容};而文字 View 在 SwiftUI 叫做 Text。...终于聊到了点按菜单实现方式了,点按菜单是什么呢?实质就是一个 View,和其它任何 View 并无二致,因此我们需要在 contextMenu 一个 View 即可。...在按钮中,我们需要设置两个点:按钮动作,也就是 action,里面的两行代码会将名言文字复制到剪贴板;另一个点是下面的 HStack ,表示一个水平排列 View。

2.1K40

使用Ionic2开发Todo应用0 开始之前1 创建新Ionic 2工程2. 设置主页(Home page)3 持久化数据保存4 总结

一个视图将会改变展现,弹出它将删除当前视图并回到前面的视图。关于导航更详细解释,我推荐看看一个相关Ionic 2导航指南。 2....我们设计一个按钮使用。因为这里个end属性,按钮将被放置在end位置。...:ViewController,可以用于模态(Modals)页面的关闭(dismiss)。...除此之外,我们创建了saveItem函数来创建newItem对象,使用当前标题和描述值(即我们建立双向数据绑定,无论用户输入什么),然后我们关闭视图,同时我们也传入了newItem在dismiss方法中...这时我们就可以用这个页面创建模态页面了,具体addItem方法。注意我们这里建立了一个onDidDismiss监听器,这样就可以获取模态关闭时回传数据,并通过saveItem方法保存。

6.1K50

SwiftUI:Alert弹窗

如果发生重要事件,通知用户一种常见方法是使用警报Alert弹窗-根据您需要,该弹出窗口包含标题,消息和一个或两个按钮。 但是请考虑一下:何时应该显示警报以及如何显示Alert?...视图是我们程序状态函数,Alert也不例外。因此,我们不用说“显示警报”,而是创建警报并设置显示警报条件。...基本SwiftUIAlert具有标题,消息和一个关闭按钮,如下所示: Alert(title: Text("Hello SwiftUI!")...相反,我们创建一些状态来跟踪警报是否显示,如下所示: @State private var showingAlert = false 然后,我们将警报附加到用户界面的某处,告诉使用该状态来确定是否显示警报...SwiftUI将观察showingAlert,并在变为true时立即显示警报。

5.4K20

iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

最好避免用户在使用日期选择器时候要进入另外一个界面。在水平方向常规环境,日期时间选择器可能会出现在一个浮层中,或者嵌入在当前内容必要时候,改变分钟滑轮单位刻度。...当告知用户多少打开视图需求比帮助用户选择特定视图更重要时,使用页面控件。...除非极其少有的情况下,用户在弹出层内进行操作结果必须要以模态视图形式展现,即便是这个时候,也请先将弹出层关闭,再出现模态视图。 确保你模态视图看起来与你app整体视觉风格相协调。...关于这一点,你可以指定以下任意一种过渡动画: 垂直出现(Vertical).模态视图底部边缘滑入屏幕,也同样屏幕底部滑出(默认模式)。 弹出(Flip).当前视图右往左水平滑动,露出模态视图。...视觉上模态视图好像原来就处于当前视图下面,当前视图移开时,便出现了。离开模态视图时,原先视图左边滑回屏幕右边。

13.2K30

Ask Apple 2022 与 SwiftUI 有关问答(上)

是否任何建议用来检测列表中行选择,类似于 “NavigationLink”,但不导航到另一个视图(例如,显示 Sheet 或列表中选择一个选项 )?...contextMenu_2022-10-26_14.01.21.2022-10-26 14_02_29如何对 @State 变量进行测试Q:对于测试 SwiftUI 视图 @State 变量是否推荐方式...在我例子中,不拖动时 0 到 75,拖动时 0 到 100。什么办法可以阻止这种情况吗?A:你可以用 .chartYScale(domain: 0 ... 75) 锁定 Y 轴刻度域。...如何改善一个包含大量 UITextField 视图效率Q:我一个包含 132 个 UITextField SwiftUI 视图。我知道这个数量很大,但这是由业务逻辑决定。...那么在 SwiftUI 中使 if 语句是否什么注意事项?A:关于 if/else 需要注意是,它们如何影响视图身份,我们在 WWDC 上有一个很好 演讲[21]。

12.2K20
领券