[Swift通天遁地]2、表格表單-(15)自定義表單文本框內容的格式

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-wlngummf-ko.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftgit

本文將演示如何設置表單中的輸入內容的格式。github

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】swift

如今開始編寫代碼,實現設置表單中的輸入內容的格式。微信

  1 import UIKit
  2 //首先在當前類文件中,
  3 //引入以及安裝的第三方類庫
  4 import Eureka
  5 
  6 //建立一個貨幣類,該類繼承自數學格式類,並遵循格式化協議。
  7 class CurrencyFormatter : NumberFormatter, FormatterProtocol
  8 {
  9     //添加一個方法,當處理對象是數字時,則設置其小數點的位置。
 10     override func getObjectValue(_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?, for string: String, range rangep: UnsafeMutablePointer<NSRange>?) throws
 11     {
 12         //若是設置對象爲空,則再也不執行後面的代碼
 13         guard obj != nil else { return }
 14         //將字符串按小數點進行分割,並從新拼接成一個新的字符串。
 15         let str = string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
 16         //根據小數點的位數,設置對象的數據。
 17         obj?.pointee = NSNumber(value: (Double(str) ?? 0.0)/Double(pow(10.0, Double(minimumFractionDigits))))
 18     }
 19     
 20     //添加一個協議中的方法,用來得到當輸入新字符時的字符輸入位置
 21     func getNewPosition(forPosition position: UITextPosition, inTextInput textInput: UITextInput, oldValue: String?, newValue: String?) -> UITextPosition
 22     {
 23         //根據原位置和偏移距離,計算並返回新的位置。
 24         return textInput.position(from: position,
 25                                   offset:((newValue?.characters.count ?? 0) - (oldValue?.characters.count ?? 0))) ?? position
 26     }
 27 }
 28 
 29 //修改當前視圖控制器類的父類的名稱
 30 class ViewController: FormViewController {
 31     
 32     override func viewDidLoad() {
 33         super.viewDidLoad()
 34         
 35         //在表單中添加一個新的段落,並設置段落的標題
 36         form +++ Section("Number formatters")
 37             //添加一個數字行
 38             <<< DecimalRow()
 39             {
 40                 //設置用戶在輸入時,實時設置數字的格式
 41                 $0.useFormatterDuringInput = true
 42                 //設置本行的標題文字
 43                 $0.title = "Currency style"
 44                 //設置本行的默認值
 45                 $0.value = 2017
 46                 //初始化一個貨幣格式對象
 47                 let formatter = CurrencyFormatter()
 48                 //根據設備的地區,使用不一樣的貨幣符號
 49                 formatter.locale = .current
 50                 //設置本行的數字爲貨幣格式
 51                 formatter.numberStyle = .currency
 52                 //設置用來格式化本行數據的對象
 53                 $0.formatter = formatter
 54             }
 55             //添加一個數字行
 56             <<< DecimalRow()
 57             {
 58                 //設置本行的標題文字
 59                 $0.title = "Scientific style"
 60                 //設置本行的默認值
 61                 $0.value = 2017
 62                 //初始化一個數字格式對象
 63                 let formatter = NumberFormatter()
 64                 //設置格式對象的本地化屬性
 65                 formatter.locale = .current
 66                 //設置本行的數字爲科學計數法
 67                 formatter.numberStyle = .scientific
 68                 //將這種格式應用在當前的表單行
 69                 $0.formatter = formatter
 70             }
 71             //添加一個整數行
 72             <<< IntRow()
 73             {
 74                 //設置本行的標題文字
 75                 $0.title = "Spell out style"
 76                 //設置本行的默認值
 77                 $0.value = 2017
 78                  //初始化一個數字格式對象
 79                 let formatter = NumberFormatter()
 80                 //設置格式對象的本地化屬性
 81                 formatter.locale = .current
 82                 //設置格式對象的數字樣式
 83                 formatter.numberStyle = .spellOut
 84                 //將這種格式應用在當前的表單行
 85                 $0.formatter = formatter
 86             }
 87 
 88             //添加一個段落,用來添加日期格式的表單的表單行
 89             +++ Section("Date formatters")
 90             //在段落中添加一個日期行
 91             <<< DateRow()
 92             {
 93                 //設置本行的標題文字
 94                 $0.title = "Short style"
 95                 //設置本行的默認值
 96                 $0.value = Date()
 97                 //初始化一個日期格式對象
 98                 let formatter = DateFormatter()
 99                 //設置格式對象的本地化屬性
100                 formatter.locale = .current
101                 //設置格式對象爲短日期樣式
102                 formatter.dateStyle = .short
103                 //將這種格式應用在當前的表單行
104                 $0.dateFormatter = formatter
105             }
106             //在段落中添加一個日期行
107             <<< DateRow()
108             {
109                 //設置本行的標題文字
110                 $0.title = "Long style"
111                 //設置本行的默認值
112                 $0.value = Date()
113                 //初始化一個日期格式對象
114                 let formatter = DateFormatter()
115                 //設置格式對象的本地化屬性
116                 formatter.locale = .current
117                 //設置格式對象爲長日期樣式
118                 formatter.dateStyle = .long
119                 //將這種格式應用在當前的表單行
120                 $0.dateFormatter = formatter
121             }
122             //添加一個段落,用來添加其餘格式的表單行
123             +++ Section("Other formatters")
124             //添加一個數字表單行
125             <<< DecimalRow()
126             {
127                 //設置本行的標題文字
128                 $0.title = "Energy: Jules to calories"
129                 //設置本行的默認值
130                 $0.value = 100.0
131                 //初始化一個能量格式對象
132                 let formatter = EnergyFormatter()
133                 //將這種格式應用在當前的表單行
134                 $0.formatter = formatter
135             }
136             //添加一個整數行
137             <<< IntRow()
138             {
139                 //設置本行的標題文字
140                 $0.title = "Weight: Kg to lb"
141                 //設置本行的默認值
142                 $0.value = 1000
143                 //初始化一個重量格式對象,
144                 //將這種格式應用在當前的表單行
145                 $0.formatter = MassFormatter()
146             }
147     }
148 
149     override func didReceiveMemoryWarning() {
150         super.didReceiveMemoryWarning()
151         // Dispose of any resources that can be recreated.
152     }
153 }
相關文章
相關標籤/搜索