1. 程式人生 > >[Swift通天遁地]二、表格表單-(13)實時調整表單元素的顯示和隱藏

[Swift通天遁地]二、表格表單-(13)實時調整表單元素的顯示和隱藏

本文將演示如何顯示或隱藏指定的表單區域。

在專案導航區,開啟檢視控制器的程式碼檔案【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 }