Wednesday, October 4, 2017

Swift dialog với textField

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