Dialog dùng để thông báo điều gì
đó cho người dùng. Vì tính nhỏ gọn, tiện lợi, ta muốn dùng nó để tương tác với
người dùng. Như lấy dữ liệu nhập vào chẳng hạn.
Ta sẽ làm một Dialog có chèn
thêm textField để người dùng nhập tên và khi ấn OK ta set tên đó ra một Label.
Khai báo nút bấm, label
var la: UILabel!
var bu:UIButton!
Định vị, set kiểu, đặt tên cho
nút là “Nhập liệu”.
bu = UIButton(frame: CGRect(x:80, y: 530, width: 100, height: 32))
setn(bu,"Nhập liệu")
Label tô chữ màu cam.
la = UILabel(frame: CGRect(x: 80, y: 500, width: 100, height: 25))
la.textColor = UIColor.orangeColor()
view.addSubview(bu)
view.addSubview(la)
Khai báo một hàm có tên nhapchu,
trong đó ta bật ra một Dialog, có textField bên trong.
func nhapchu(sender: UIButton){
let alert = UIAlertController(title: "Nhập tên", message: "", preferredStyle: .Alert)
alert.addTextFieldWithConfigurationHandler({(te: UITextField!) in
te.placeholder = "Tên"
})
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction) ->Voidin
let ten = alert.textFields
let ten2 = ten! as [UITextField]
let n = ten2[0].text
let s = n!.characters.count
if s <1 {
self.toat("Bạn chưa nhập dữ liệu!")
self.presentViewController(alert, animated: true, completion: nil)
}
else{
self.la.text=n!
}
}))
alert.addAction(UIAlertAction(title: "Cancel",
style: UIAlertActionStyle.Cancel,
handler:nil))
self.presentViewController(alert, animated: true, completion: nil)
}
Khi người dùng chưa nhập gì, ta
hiện thông báo chưa nhập, nhập rồi, ta set chữ đó ra label.
Cuối cùng set hàm cho nút trong
viewDidLoad.
bu.addTarget(self, action: #selector(ViewController.nhapchu(_:)), forControlEvents: UIControlEvents.TouchUpInside)
Chạy thử, ấn nút để thấy dialog
bật ra, nhập chữ rồi ấn OK xem kết quả.
Hàm set kiểu cho nút như sau
func setn(bun:UIButton,_ t: String){
let a=NSMutableAttributedString(string: t, attributes: [NSForegroundColorAttributeName: UIColor.blueColor(), NSFontAttributeName: UIFont(name: "Arial", size: 15.0)!])
bun.setAttributedTitle(a, forState: .Normal)
bun.backgroundColor = hex("#e6e6fa")
bun.layer.cornerRadius = 16
bun.layer.borderColor = hex("#6699cc").CGColor
bun.layer.borderWidth = 1
}
Hàm toat có thể xem tại đây.
No comments:
Post a Comment