SwiftUI Alerts的使用示例

SwiftUI里的Alerts可以分为三类:

  • 警告对话框(Alert Dialogs)
  • 操作列表(Action Sheets)
  • 弹窗(Popovers)

警告对话框(Alert Dialogs)示例

使用SwiftUI,我们可以很容易地使用声明的方式来创建警告框以及定义操作,示例如下:

struct AlertView: View {
@State private var showingAlert = false
var body: some View {
Button(action: {
self.showingAlert = true
}) {
Text("Show Alert")
}
.alert(isPresented:$showingAlert) {
Alert(title: Text("SwiftUI 警告框"), message: Text("很容易吧"), primaryButton: .default(Text("是的")) {
print("Yeah")
}, secondaryButton: .destructive(Text("取消")))
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
AlertView()
}
}

操作列表(Action Sheets)示例

struct ActionSheetView: View {
@State private var showSheet = false
var body: some View {
Button(action: {
self.showSheet = true
}) {
Text("Show Action Sheet")
}
.actionSheet(isPresented: $showSheet) {
ActionSheet(title: Text("Are you sure?"), message: Text("This action cannot be undone"), buttons: [.destructive(Text("Delete")), .cancel()])
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ActionSheetView()
}
}

展示如下:

弹窗(Popovers)示例

弹出窗口基本上是提示。与iPhone上的modal sheet没有太大区别。设置arrowEdge属性可以设定箭头,以及箭头方向。

示例如下:

struct PopoverView: View {
@State private var showPopover: Bool = false
var body: some View {
VStack {
Button("Display Popover") {
self.showPopover = true
}.popover(
isPresented: self.$showPopover,
arrowEdge: .bottom
) { Text("Hello Popover") }
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
Group {
PopoverView()
.previewDevice(PreviewDevice(rawValue: "iPad Pro (11-inch)"))
.previewDisplayName("iPad Pro (11-inch)")
PopoverView()
.previewDevice(PreviewDevice(rawValue: "iPhone XS Max"))
.previewDisplayName("iPhone XS Max")
}
}
}
#endif

图片展示:


版权声明:著作权归作者所有。

相关推荐

Linux uname命令的示例(系统管理命令)

说明打印系统相关信息,包括内核版本号、硬件架构、主机名称和操作系统类型等。语法uname [OPTION]... 常用选项-a,--all:显示全部的信息;-m,--machine:显示机器类型;-n,-nodename:显示在网络上的主机名称;-r,--release:显示操作系统的发行编号;-s,--sysname:显示操作系统名称;-v:显示操作系统的版本;-p,--process

Linux tee命令示例

功能从标准输入读取数据并写入到标准输出和文件。如果输出的文件不存在,则新建文件。语法tee [OPTION]... [FILE]... 选项:-a(--append): 追加输入内容到文件后面,不是覆盖。-i(--ignore-interrupts): 忽略中断信号。-help: 在线帮助。--version: 显示版本信息。示例使用管道

Android使用CountDownTimer实现倒计时示例(Kotlin)

CountDownTimer是一个抽象类,它的构造函数为CountDownTimer(long millisInFuture, long countDownInterval) millisInFuture:倒计时的总时间,从调用start()方法开始。毫秒数countDownInterval:倒计时的时间间隔。毫秒数。CountDownTimer主要有四个方法:syn

Python:defaultdict应用示例

class collections.defaultdict([default_factory[, ...]]) defaultdict继承与内置类dict,但对于不存在的键处理方式不同。dict处理缺失的键在Python访问dict不存在的键会抛出KeyError异常。如计数列表里的颜色colors = ('yellow', 'red', 'yellow',

JavaScript ES 2017: 通过示例学习Async/Await

预备知识ES 2017新增了Asynchronous函数。 在JavaScript中,Async函数本质上是一种处理异步代码的比较简洁的方法。 为了理解这些是什么,以及它们是如何工作的,我们首先需要了解Promise。如果你不知道Promise是什么,那么你应该先阅读我发表的关于Promise的这篇文章。 在理解Promise之前,你是不会理解JavaScr

SpringBoot入门示例

创建Maven POM文件在pom.xml添加内容如下:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht