为有牺牲多壮志,敢教日月换新天。

[Swift UI]一、基础控件-(11)通过Button打开一个模态窗口

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: https://www.cnblogs.com/strengthen/p/12263645.html
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

本文将使用Button控件的sheet方法,打开一个指定内容的模态窗口。

结构体相对于类来说更加轻量,所以SwiftUI使用结构体来定义视觉控件。

 1 import SwiftUI
 2 
 3 struct ContentView : View
 4 {
 5     //给结构体对象添加一个属性,
 6     //该属性为布尔类型,用于决定模态窗口的显示和隐藏
 7     @State var isPresented = false
 8     
 9     var body: some View
10     {
11         VStack
12             {
13                 //添加一个按钮控件,并设置它的标题文字
14                 Button("Show modal")
15                 {
16                     //当按钮被点击时,设置布尔属性的值为真。
17                     self.isPresented = true
18                     //调用Button控件的sheet方法,并设置isPresented的值为当前的布尔属性,
19                     //当属性的值为真时,显示sheet中的内容。
20                 }.sheet(isPresented: $isPresented, content:
21                     {
22                         //将这个自定义的视图,作为按钮控件的sheet内容
23                         MyDetailView(message: "Model window")
24                 })
25         }
26         //从窗口的上方向下拖动,可以关闭该窗口。
27     }
28 }
29 
30 //定义一个遵守View协议的指定名称的结构体,作为一个新的自定义视图。
31 //结构体相对于类来说更加轻量,所以SwiftUI使用结构体来定义视觉控件。
32 struct MyDetailView: View
33 {
34     //给自定义视图添加一个字符串类型的属性
35     let message: String
36     //实现View协议中必需实现的body属性,所有自定义视图中的元素都需要放在body中。
37     var body: some View
38     {
39         //添加一个垂直排列视图VStack,作为子视图的容器。
40         VStack{
41             //添加一个文本视图来显示属性的值。
42             Text(message)
43                 //并设置字体为标题样式。
44                 .font(.largeTitle)
45         }
46     }
47 }
48 
49 #if DEBUG
50 struct ContentView_Previews : PreviewProvider
51 {
52     static var previews: some View
53     {
54         ContentView()
55     }
56 }
57 #endif

 

posted @ 2020-02-05 14:23  为敢技术  阅读(432)  评论(0)    收藏  举报