[Swift通天遁地]二、表格表单-(13)实时调整表单元素的显示和隐藏
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10202214.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示如何显示或隐藏指定的表单区域。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编写代码,实现隐藏和显示表单区域的功能。
1 import UIKit 2 //首先在当前类文件中, 3 //引入以及安装的第三方类库 4 import Eureka 5 6 //修改当前视图控制器类的父类的名称 7 class ViewController: FormViewController { 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 //设置文本行的更新事件 13 TextRow.defaultCellUpdate = 14 { 15 cell, row in 16 //设置文本行的字体大小为12 17 cell.textLabel?.font = UIFont.italicSystemFont(ofSize: 12) 18 } 19 20 //往表单中添加一个段落,并设置段落的标题文字 21 form = Section("What do you want to talk about:") 22 //往段落中添加一个分段行 23 <<< SegmentedRow<String>("segments") 24 { 25 //设置该行的选项 26 $0.options = ["Sport", "Music", "Films"] 27 //设置该行的默认值 28 $0.value = "Films" 29 } 30 //添加另一个段落 31 +++ Section() 32 { 33 //设置该段落的标识 34 $0.tag = "sport_s" 35 //设置该段落的显示属性。 36 //并设置当分段的值不等于运动时,将隐藏段落 37 $0.hidden = "$segments != 'Sport'" 38 } 39 //在段落中添加一个文本行 40 <<< TextRow() 41 { 42 //设置该行的标题文字 43 $0.title = "Which is your favourite soccer player?" 44 } 45 //在段落中添加一个文本行 46 <<< TextRow() 47 { 48 //设置该行的标题文字 49 $0.title = "Which is your favourite coach?" 50 } 51 //在段落中添加一个文本行 52 <<< TextRow() 53 { 54 /设置该行的标题文字 55 $0.title = "Which is your favourite team?" 56 } 57 58 //添加另一个段落 59 +++ Section() 60 { 61 //设置段落的标记的值 62 $0.tag = "music_s" 63 //设置该段落的显示属性。 64 //并设置当分段的值不等于音乐时,将隐藏段落 65 $0.hidden = "$segments != 'Music'" 66 } 67 //在段落中添加一个文本行 68 <<< TextRow() 69 { 70 //设置该行的标题文字 71 $0.title = "Which music style do you like most?" 72 } 73 //在段落中添加一个文本行 74 <<< TextRow() 75 { 76 //设置该行的标题文字 77 $0.title = "Which is your favourite singer?" 78 } 79 //在段落中添加一个文本行 80 <<< TextRow() 81 { 82 //设置该行的标题文字 83 $0.title = "How many CDs have you got?" 84 } 85 86 //添加一个新段落 87 +++ Section() 88 { 89 //设置段落的标记的值 90 $0.tag = "films_s" 91 //设置该段落的显示属性。 92 //并设置当分段的值不等于电影时,将隐藏段落 93 $0.hidden = "$segments != 'Films'" 94 } 95 //在段落中添加一个文本行 96 <<< TextRow() 97 { 98 //设置该行的标题文字 99 $0.title = "Which is your favourite actor?" 100 } 101 //在段落中添加一个文本行 102 <<< TextRow() 103 { 104 //设置该行的标题文字 105 $0.title = "Which is your favourite film?" 106 } 107 108 //添加一个新段落 109 +++ Section() 110 //往段落中添加一个Switch表单行 111 <<< SwitchRow("Show Next Row") 112 { 113 //设置该行的标题文字 114 $0.title = $0.tag 115 } 116 //往段落中添加一个Switch表单行 117 <<< SwitchRow("Show Next Section") 118 { 119 //设置该行的标题文字 120 $0.title = $0.tag 121 //给Switch表单行,添加一个交互事件。 122 //当上一行的开关控件处于显示状态时,则显示当前的表单行。 123 $0.hidden = .function(["Show Next Row"], { form -> Bool in 124 let row: RowOf<Bool>! = form.rowBy(tag: "Show Next Row") 125 return row.value ?? false == false 126 }) 127 } 128 129 //添加一个新段落,并设置段落的尾部内容 130 +++ Section(footer: "This section is shown only when 'Show Next Row' switch is enabled") 131 { 132 //给段落,添加一个交互事件。 133 //当上一个段落中的第二个开关处于激活状态时,显示当前的段落,否则隐藏当前的段落。 134 $0.hidden = .function(["Show Next Section"], { form -> Bool in 135 let row: RowOf<Bool>! = form.rowBy(tag: "Show Next Section") 136 return row.value ?? false == false 137 }) 138 } 139 //在段落中添加一个文本行 140 <<< TextRow() 141 { 142 //设置该行的标题文字 143 $0.placeholder = "Gonna dissapear soon!!" 144 } 145 } 146 147 override func didReceiveMemoryWarning() { 148 super.didReceiveMemoryWarning() 149 // Dispose of any resources that can be recreated. 150 } 151 }