专栏首页韦弦的偶尔分享SwiftUI:alert() 和 sheet() 与可选值一起使用

SwiftUI:alert() 和 sheet() 与可选值一起使用

SwiftUI有两种创建警报和表单的方式,到目前为止,我们仅使用一种方法:绑定到布尔值,该布尔值在变为 true 时显示 Alert 或 Sheet。

第二种方法并不经常使用,但是在您需要的时候它确实有用:您可以使用可选的Identifiable对象作为条件,并且当该对象具有值时将显示 Alert 或Sheet 。它的闭包将为您提供用于条件的非可选值,因此您可以安全地使用它。

为了说明这一点,我们可以创建一个符合Identifiable协议的简易的User结构体:

struct User: Identifiable {
    var id = "Taylor Swift"
}

然后,我们可以在ContentView中创建一个属性,以跟踪选择了哪个用户,默认情况下设置为 nil

@State private var selectedUser: User? = nil

现在,我们可以更改ContentViewbody,以便在点击其文本视图时将selectedUser设置为一个值,然后再为selectedUser提供值时使用alert(item:)显示警报:

Text("Hello, World!")
    .onTapGesture {
        self.selectedUser = User()
    }
    .alert(item: $selectedUser) { user in
        Alert(title: Text(user.id))
    }

使用该简单代码,每当您点击“ Hello,World!”出现提示“Taylor Swift”的警报。解除警报后,SwiftUI会将selectedUser设置为nil

这似乎是一个简单的功能,但是比其他功能更简单,更安全。如果我们要使用旧的.alert(isPresente:)修饰符来重写上述代码,它将看起来像这样:

struct ContentView: View {
    @State private var selectedUser: User? = nil
    @State private var isShowingAlert = false

    var body: some View {
        Text("Hello, World!")
            .onTapGesture {
                self.selectedUser = User()
                self.isShowingAlert = true
            }
            .alert(isPresented: $isShowingAlert) {
                Alert(title: Text(selectedUser!.id))
            }
    }
}

那是另一个属性,在onTapGesture()中设置另一个值,并在alert()修饰符中强制展开——如果您可以避免这些事情的话那随你好了。

参考 Alert弹窗 SwiftUI:ActionSheet 弹窗 SwiftUI:Sheet 视图

译自 Using alert() and sheet() with optionals

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SwiftUI:ActionSheet 弹窗

    SwiftUI给我们Alert提供了一个或两个按钮来显示重要的公告,而sheet()给了我们用于在当前视图的顶部显示整个视图的信息,但是它也为我们提供了Acti...

    韦弦zhy
  • 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单

    ? 以下是关于神经网络、机器学习、深度学习以及大数据学习的备忘单,其中部分内容和此前发布的《资源 | 值得收藏的 27 个机器学习的小抄》有所重复,大家可以两...

    AI科技大本营
  • Java 解析Excel文件为JSON

    Excel转Json的需求 反正我对SSM基本不会的情况下来到现在这家公司,都是90后,感觉很好。第二天就给我开发任务,就是把用户上传的Excel文件转成JSO...

    庞小明
  • 前端基础-CSS伪类选择器和类选择器一起使用

    cwl_java
  • Python自动化办公系列之Python操作Excel

    ③ 在python中使用excel函数公式(很有用)         

    磐创AI
  • python自动化办公——python操作Excel、Word、PDF集合大全

    本文是鉴于有些粉丝的工作需求,有时候需要遇到这些文件的处理。因此,我写了一个文章集合,供大家参考,整篇文章已经整理成册(如下图所示)。由于文档获取人数太多,大家...

    用户7886150
  • 最全总结 | 聊聊 Python 办公自动化之 Excel(中)

    上一篇文章中,我们聊到使用 xlrd、xlwt、xlutils 这一组合操作 Excel 的方法

    AirPython
  • 全渠道客服中心聊天机器人实战

    本文要点 客服中心的渠道多种多样,而且数量一直在增长。 企业需要支持所有这些渠道,可以自己开发服务,也可以向CPaaS供应商购买服务,或者集成已有的服务。 自研...

    用户1263954
  • 2.5.3、Google Analytics高级应用——Google Sheet的应用

    Google Sheet是Google于2006年推出的,是一个在线表格编辑工具。Google Sheet可让您随时随地创建、编辑和与他人协作处理表格,而且完全...

    GA小站

扫码关注云+社区

领取腾讯云代金券