Nháy chuột phải vào folder baidau, new file.
Chọn CoCoa Class, đặt tên là second, chuyển chuột xuống ô
dưới để chữ Next hiện lên, Create.
Sửa import thành import UIKit sẽ hết lỗi đỏ.
Bây giờ nháy vào Main.storyboard,
Ở dưới bên phải, chỗ Object library, nháy chuột phải vào
view Controller, giữ, kéo nó vào trong storyboard, cứ để đè lên cái đang có
cũng được.
Trên đỉnh của nó, bạn nháy chuột để cái chấm vàng ngoài
cùng hiện màu xanh
Phía trên bên phải, tìm cái biểu tượng có tên identity
inspector, chỗ ô class, nháy chấm xanh góc phải để nó xổ ra, tìm xuống dưới chọn
class second.
Bây giờ quay về second.swift, copy lệnh viewDidLoad vào
override func viewDidLoad() {
super.viewDidLoad()
}
Khai báo một Label
var la: UILabel!
Định vị, nhập chữ “Nhập năm dương lịch”, đổ nền
cho view là màu trắng
la = UILabel(frame: CGRect(x: 100, y: 30, width: 280, height: 25))
la.text = "Nhập
năm dương lịch"
la.textColor = UIColor.blueColor()
view.backgroundColor = UIColor.whiteColor()
view.addSubview(la)
thêm luôn đoạn code để làm mất thanh bar bên
trên
override func prefersStatusBarHidden() -> Bool {
return true
}
Class second giờ trông như sau
Quay về ViewController.swift, copy đoạn sau
vào trước cái ngoặc dóng dưới cùng
func nutnext(sender: UIButton){
let vc = second()
self.presentViewController(vc,
animated: true, completion: nil)
}
Đây là ta code lệnh cho cái nút Next để chuyển nó sang màn hình thứ hai.
Tiếp theo là gắn nó vào nút, copy đoạn sau vào trong viewDidLoad
bu2.addTarget(self, action: #selector(ViewController.nutnext(_:)), forControlEvents: UIControlEvents.TouchUpInside)
Bây giờ ấn nút chạy thử, ấn nút next, màn
hình thứ hai bật ra trông như sau
Trở lại class second.swift, khai báo một
textField dùng để nhập chữ vào, copy lên trên chỗ override.
var nhap:UITextField!
Tiếp theo ta định vị, đổ màu nền, yêu cầu bàn
phím số, copy các lệnh sau vào trong viewDidLoad
nhap = UITextField(frame: CGRect(x:130, y: 70, width: 100, height:
40))
nhap.backgroundColor = UIColor.lightGrayColor()
nhap.textAlignment = NSTextAlignment.Center
nhap.placeholder = "Dương
lịch"
nhap.adjustsFontSizeToFitWidth = true
nhap.font=UIFont.systemFontOfSize(14)
nhap.keyboardType = UIKeyboardType.PhonePad
Nhét vào view nữa là xong view.addSubview(nhap)
Chạy thử để thấy màn hình 2 đã có ô nhập chữ.
Nếu nháy chuột vào ô textField mà không thấy
bàn phím, tại màn hình máy ảo, góc trên bên trái, nháy vào Hardware,
Keyboard,chọn dòng trên cùng, use the same layout as OS X.
Khai báo thêm 2 Label, 2 nút bấm
var la2: UILabel!
var la3: UILabel!
var bu1:UIButton!
var bu2:UIButton!
Định, đặt tên, tô màu chữ cho chúng
la2 = UILabel(frame: CGRect(x: 120, y: 125, width: 280, height: 25))
la2.text = "Năm
âm lịch là:"
la2.textColor = UIColor.blueColor()
la3 = UILabel(frame: CGRect(x: 140, y: 155, width: 280, height:
25))
la3.textColor = UIColor.redColor()
bu1 = UIButton(frame: CGRect(x:80, y: 190, width: 100, height:
32))
bu2 = UIButton(frame: CGRect(x:200, y: 190, width: 100, height:
32))
bu1.setTitle("Đổi
năm",forState: .Normal)
bu1.setTitleColor(UIColor.blueColor(),
forState: .Normal)
bu1.backgroundColor = UIColor.lightGrayColor()
bu2.setTitle("Quit",forState:
.Normal)
bu2.setTitleColor(UIColor.blueColor(),
forState: .Normal)
bu2.backgroundColor = UIColor.lightGrayColor()
Nhét vào view.
view.addSubview(bu1)
view.addSubview(bu2)
view.addSubview(la2)
view.addSubview(la3)
Chạy thử để chắc chắn ta đã làm đúng đến
đây.
Tiếp theo ta copy phương thức canchi vào
trên dấu đóng ngoặc cuối cùng
func canchi(nam:Int)-> String {
let soducan
= nam % 10
var Can = ""
if (soducan
== 1) {
Can = "Tân"
}
else if (soducan
== 2) {
Can = "Nhâm"
}
else if (soducan
== 3) {
Can = "Quý"
}
else if (soducan
== 4) {
Can = "Giáp"
}
else if (soducan
== 5) {
Can = "Ất"
}
else if (soducan
== 6) {
Can = "Bính"
}
else if (soducan
== 7) {
Can = "Đinh"
}
else if (soducan
== 8) {
Can = "Mậu"
}
else if (soducan
== 9) {
Can = "Kỷ"
}
else {
Can = "Canh"
}
let soduchi
= nam % 12
var Chi = "";
if (soduchi
== 1) {
Chi = "Dậu"
}
else if (soduchi
== 2) {
Chi = "Tuất"
}
else if (soduchi
== 3) {
Chi = "Hợi"
}
else if (soduchi
== 4) {
Chi = "Tý"
}
else if (soduchi
== 5) {
Chi = "Sửu"
}
else if (soduchi
== 6) {
Chi = "Dần"
} else if (soduchi
== 7) {
Chi = "Mão"
}
else if (soduchi
== 8) {
Chi = "Thìn"
}
else if (soduchi
== 9) {
Chi = "Tỵ"
}
else if (soduchi
== 10) {
Chi = "Ngọ"
}
else if (soduchi
== 11) {
Chi = "Mùi"
}
else {
Chi = "Thân"
}
return Can + "
" + Chi
}
Phương thức này đổi một năm dương thành năm
âm lịch gồm can và chi
Tiếp theo copy phương thức Toast để cho ra
màn hình thông báo tới người dùng. Vì Swift không có sẵn như Android nên ta phải
tự làm phương thức này.
func toast(t:String){
let
toastLabel = UILabel(frame: CGRectMake(self.view.frame.size.width/2 - 150, 150, 300, 35))
toastLabel.backgroundColor = UIColor.blackColor()
toastLabel.textColor = UIColor.whiteColor()
toastLabel.textAlignment = NSTextAlignment.Center;
self.view.addSubview(toastLabel)
toastLabel.text = t
toastLabel.alpha = 1.0
toastLabel.layer.cornerRadius = 10;
toastLabel.clipsToBounds = true
UIView.animateWithDuration(4.0, delay: 0.5,
options: .CurveEaseOut, animations: {
toastLabel.alpha = 0.0
}, completion: nil)
}
Nhớ copy cho đúng chỗ, không bị hiện dấu đỏ
nào.
Tiếp theo là hai phương thức điều khiển 2
cái nút bấm, copy tiếp vào
func nut1(sender: UIButton){
let nam = nhap.text
if(nam == ""||nam == "
"){
toast("Bạn
chưa nhập năm sinh")
}
else{
if let myNumber
= NSNumberFormatter().numberFromString(nam!) {
let namduong
= myNumber.integerValue
let namam=canchi(namduong)
la3.text = namam
}
else{
toast("Dữ
liệu nhập vào không hợp lệ");
}
}
}
func nut2(sender:
UIButton){
self.dismissViewControllerAnimated(true,
completion: nil)
}
Phương thức nut1 lấy giá trị của TextField,
kiểm tra nếu rỗng thì thông báo chưa nhập gì, nếu đã nhập thì chuyển nó thành số
rồi gọi phương thức canchi đổi ra năm âm lịch và set vào Label thứ 3.
Nếu người dùng nhập lẫn ký tự khác số thì
thông báo để nhập lại.
Phương thức nut2 chỉ đơn giản là thoát về
màn hình trước.
Nếu bạn làm đúng, code trông như sau
Chạy thử,
thay đổi năm để xem năm âm lịch đổi theo, thử không nhập gì, sẽ có thông báo ra
màn hình.
Thử nhập kèm
dấu sao, chấm, phảy xem sao. Ấn nút Quit để thoát.
Như vậy bài này ta đã làm ứng dụng đổi dương lịch ra
âm lịch. ta học cách mở ra một màn hình mới, trở về màn hình trước, thêm
class và gắn nó vào storyboard.
Ta cũng học cách dùng TextField để lấy dữ
liệu người dùng nhập vào, sử dụng tính toán ra năm âm lịch.
Hãy nhìn chữ self trong lệnh Toast, nó chỉ cái view hiện tại nhưng bạn không
biết cũng chả sao, vì nó là thủ tục, cứ copy cả đoạn lệnh là được rồi.
Do
đó học bằng thực hành lợi như vậy. Rất nhiều từ khóa ta không cần biết nó là
gì, chỉ cần biết cả đoạn lệnh ấy nó làm cái gì, như với Toast là để gửi thông
báo ra màn hình cho người dùng. Thế là lần sau chỗ nào cần ta cứ copy cả đoạn
vào.
Khỏi
cần đọc lý thuyết nhức óc chả tích sự gì.
No comments:
Post a Comment