前言
今天的swift小練習比較簡單, 主要目的是如何快速熟悉storyboard拖線后的代碼風格. 下面我們來看看運行效果, 通過代碼, 我們看看能從中領(lǐng)悟到什么?
-
運行效果
day-02 我們再來看看storyboard
storyboard
- 在來看看代碼
import UIKit
import Social
class ViewController: UIViewController {
@IBOutlet weak var nameTextFiled: UITextField!
@IBOutlet weak var genderSegControl: UISegmentedControl!
@IBOutlet weak var salaryLabel: UILabel!
@IBOutlet weak var straightSwitch: UISwitch!
@IBOutlet weak var workTextFiled: UITextField!
@IBOutlet weak var birthdayPicker: UIDatePicker!
@IBAction func salaryHandler(_ sender: Any) {
// 點擊這里的要求: 拖動Slider 后面的工資就會改變
let slider = sender as! UISlider
// 獲取slider的當前值:
let i = Int(slider.value)
// 賦值
salaryLabel.text = "¥\(i)K"
}
@IBAction func tweetButtonOnClicked(_ sender: Any) {
// 判斷幾個輸入框是否為空, 如果為空, 那么直接返回
if (nameTextFiled.text == "" ||
workTextFiled.text == "" ||
salaryLabel.text == "") {
showAlert("Info Miss", message: "Please fill out the form", buttonTitle: "Ok")
return
}
let name: String! = nameTextFiled.text
let work: String! = workTextFiled.text
let salary: String! = salaryLabel.text
// get age
let gregorian = Calendar(identifier: Calendar.Identifier.gregorian)
let now = Date()
let components = (gregorian as NSCalendar?)?.components(NSCalendar.Unit.year, from: birthdayPicker.date, to: now, options: [])
let age:Int! = components?.year
var interestedIn:String! = "Women"
if (genderSegControl.selectedSegmentIndex == 0 && !straightSwitch.isOn) {
interestedIn = "Men"
}
if (genderSegControl.selectedSegmentIndex == 1 && straightSwitch.isOn ) {
interestedIn = "Women"
}
let tweet = "Hi, I am \(name!). As a \(age!)-year-old \(work!) earning \(salary!)/year, I am interested in \(interestedIn!). Feel free to contact me!"
tweetSLCVC(tweet)
}
fileprivate func tweetSLCVC(_ tweet: String) {
if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeTwitter){
let twitterController:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
twitterController.setInitialText(tweet)
self.present(twitterController, animated: true, completion: nil)
} else {
showAlert("Twitter Unavailable", message: "Please configure your twitter account on device", buttonTitle: "Ok")
}
}
// MARK: - 自定義彈框
fileprivate func showAlert(_ title: String, message: String, buttonTitle: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: buttonTitle, style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
view.endEditing(true)
}
從代碼中學到一下幾點
1, fileprivate和private的區(qū)別: 兩者都是關(guān)鍵字, 并且都是修飾私有屬性或者私有方法.但是他們之間的區(qū)別就是fileprivate修飾的屬性或者方法子類是不能訪問, 但是private修飾的屬性和方法,子類是可以訪問的.
2, 如何實現(xiàn)自定義一個簡單的彈框
3, 蘋果建議我們將多余的代碼或者說冗余的代碼刪除掉, 只需要留下用到的代碼即可
4, 注意強制轉(zhuǎn)換的寫法, 拼接的寫法
總結(jié)
不積跬步無以至千里, 不能好高騖遠. 代碼雖然簡單, 任然堅持記錄筆記的原因是想養(yǎng)成一個很好的習慣. 不要因簡單就忽視它, 也不要因困難而害怕它.