Trong bài này ta sẽ truyền dữ liệu ngược trở về class trước,
ở đây là ViewController.swift.
Giả sử sau khi sang class second, ta muốn lấy giá trị người
dùng nhập vào textField để chuyển ngược về, ta sẽ làm như sau.
Tại ViewController.swift, thêm chữ sau vào đầu class.
DataEnteredDelegate
Cứ kệ lỗi đỏ đó. Tiếp theo, copy hàm sau vào trên ngoặc đóng cuối cùng
func setback(info: String){
la.text = info
}
Hàm này sẽ lấy
giá trị chuỗi chuyển về từ class second và set nó ra Label la vốn đang có chữ ”Đây
là chữ ví dụ”
Thêm dòng sau
vào trong lệnh override func prepareForSegue
messageController.delegate = self
Sang class second, copy đoạn sau xuống ngay dưới lệnh import
protocol DataEnteredDelegate: class {
func setback(info: String)
}
Thêm dòng sau vào sau ngay dưới dòng bắt đầu class
weak var delegate: DataEnteredDelegate? = nil
Sửa hàm func nut2 thành.
let
nam = nhap.text
if(nam == ""||nam == " "){
toast("Bạn chưa nhập năm sinh")
}
else{
self.delegate?.setback(nam!)
self.dismissViewControllerAnimated(true,
completion: nil)
}
Trong hàm này, ta lấy giá trị của textField, nếu nó rỗng,
yêu cầu người dùng nhập lại, nếu có dữ liệu rồi ta pass nó trở về màn hình trước
thông qua hàm setback đã khai báo trong class ViewController. Để làm việc này
ta cần có protocol đã khai báo ngay trên đầu chương trình.
Chạy thử, màn hình bật sang, ta nhập vào số nào đó.
Vậy ta đã chuyền đi, chuyển về dữ liệu từ ViewController sang
class second.
Có thể chuyển bất cứ dữ liệu dạng nào, như mảng, chuỗi, số đều
được.
No comments:
Post a Comment